首页 > 解决方案 > 如何在python中添加或更新列表

问题描述

我有以下列表:

数据

data_set = [(2, 2021, '2300'),(1, 2021, '2500'),(12, 2020, '2400'),(11, 2020, '1500')]

我想将此列表格式化为以下列表,

预期输出

    [
        {
            "2021-01-01T00": [
                {
                    "2021-02-01T00:00:00": 2300
                },
                {
                    "2021-01-01T00:00:00": 2500
                }
            ]
        },
        {
            "2020-01-01T00": [
                {
                    "2020-12-01T00:00:00": 2400
                },
                {
                    "2020-11-01T00:00:00": 1500
                }
            ]
        }
    ]

我不知道如何在两个对象中格式化这两年。我很努力,但由于我是 python 新手,所以如果你知道格式化这些数据的方法,请提供帮助。

已编辑

示例代码

result = []
for item in data_set:
    result.append({
        str(datetime.datetime(item[1], item[0], 1)): float(item[2])
    })

使用上面的代码,我得到以下输出,

    [
        {
            "2021-02-01 00:00:00": "2300"
        },
        {
            "2021-01-01 00:00:00": "2500"
        },
        {
            "2020-12-01 00:00:00": "2400"
        },
        {
            "2020-11-01 00:00:00": "1500"
        }
    ]

但我希望每年的记录分开,就像我在上面的EXPECTED OUTPUT中描述的那样。

标签: pythonlistobject

解决方案


这应该工作!

data_set = [(2, 2021, '2300'),(1, 2021, '2500'),(12, 2020, '2400'),(11, 2020, '1500')]
import datetime
final_dict = dict()
for item in data_set:

    year_date = str(datetime.datetime(item[1], 1, 1))
    full_date = str(datetime.datetime(item[1], item[0], 1))
    
    current_months_dict = final_dict.get(year_date, list())
    
    current_months_dict.append({full_date: item[2]})
    final_dict[year_date] = current_months_dict

final_list = []
for key, value in final_dict.items():
    final_list.append({key:value})
print(final_list)

推荐阅读