使用groupbyd将字典列表转换为字典列表

2024-06-06 20:03:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我下面有一份字典的清单

Data = [{"Date": "Fri, 13 Oct 2017 00:00:00 GMT",
         "In_Time": "Fri, 13 Oct 2017 13:10:00 GMT",
         "Owner_Name": "Ashish Bainade"},
        {"Date": "Fri, 13 Oct 2017 00:00:00 GMT",
         "In_Time": "Fri, 13 Oct 2017 13:03:00 GMT",
         "Owner_Name": "Akshara Bainade"},
        {"Date": "Fri, 12 Oct 2017 00:00:00 GMT",
         "In_Time": "Fri, 12 Oct 2017 13:03:00 GMT",
         "Owner_Name": "Sam"}]

我想转换成自定义的词典列表,并按日期分组。 示例输出为:

^{pr2}$

我尝试使用itertools.groupby函数,但是没有得到预期的结果。在

我使用的代码:

from itertools import groupby

group_by_field = 'Date'
f = lambda x: x[group_by_field]
response = [item for item in groupby(sorted(Data, key=f), f)]
print response
# [('Fri, 12 Oct 2017 00:00:00 GMT', <itertools._grouper object at 0x000000000288E2B0>), ('Fri, 13 Oct 2017 00:00:00 GMT', <itertools._grouper object at 0x000000000288E1D0>)]

Tags: nameinfielddatadatebytimegroup
1条回答
网友
1楼 · 发布于 2024-06-06 20:03:14

你的代码离目标并不远,但是你不能仅仅在列表理解中收集结果,你必须使用混合的列表和字典理解来创建dict列表的内部dict。试试这个:

f = lambda x: x['Date']
res = [{"Date": key, "Visitors": [{k: d[k] for k in d if k != "Date"} for d in group]}
       for key, group in itertools.groupby(sorted(Data, key=f), f)]

结果是res

^{pr2}$

相关问题 更多 >