在python列表中集成字典
我的字典清单如下:在python列表中集成字典,python,json,python-3.x,list,dictionary,Python,Json,Python 3.x,List,Dictionary,我的字典清单如下: [ { "name":"reach", "values":[ { "value":0, "end_time":"2020-09-11T07:00:00+0000" }, { "value&quo
[
{
"name":"reach",
"values":[
{
"value":0,
"end_time":"2020-09-11T07:00:00+0000"
},
{
"value":1,
"end_time":"2020-09-12T07:00:00+0000"
}
]
},
{
"name":"impressions",
"values":[
{
"value":0,
"end_time":"2020-09-11T07:00:00+0000"
},
{
"value":4,
"end_time":"2020-09-12T07:00:00+0000"
}
]
},
{
"name":"reach",
"values":[
{
"value":1,
"end_time":"2020-09-13T07:00:00+0000"
},
{
"value":2,
"end_time":"2020-09-14T07:00:00+0000"
}
]
}
]
我希望字典的集成值键与其名称键相同,如下所示:
[
{
"name":"reach",
"values":[
{
"value":0,
"end_time":"2020-09-11T07:00:00+0000"
},
{
"value":1,
"end_time":"2020-09-12T07:00:00+0000"
},
{
"value":1,
"end_time":"2020-09-13T07:00:00+0000"
},
{
"value":2,
"end_time":"2020-09-14T07:00:00+0000"
}
]
},
{
"name":"impressions",
"values":[
{
"value":0,
"end_time":"2020-09-11T07:00:00+0000"
},
{
"value":4,
"end_time":"2020-09-12T07:00:00+0000"
}
]
}
]
但我现在还不知道。我该怎么做?
我是Python的初学者,可能不知道一些细节。
附言:我想用最小的减速来处理大量数据。
你应该先发布你的尝试,而不是要求别人这样做。然而:
new_data_dict = {}
for item in data:
if item['name'] not in new_data_dict:
new_data_dict[item['name']] = []
new_data_dict[item['name']] += item['values']
new_data_list = [{'name': name, 'values': values} for name, value in new_data_dict.items()]
使用此代码,您可以在result_dict中将结果作为键值,其中key是名称,value是对应于此名称的值的列表。我认为此结构更易于维护,在转换数据后,您应该继续使用此结构。您可以使用
itertools.groupby
from itertools import chain, groupby
data = sorted(d, key=lambda x: x['name'])
res = [{'name': k, 'values': list(chain.from_iterable(y['values'] for y in g))} for k, g in groupby(data, key=lambda x: x['name'])]
print(res)
输出:
[{'name': 'impressions',
'values': [{'value': 0, 'end_time': '2020-09-11T07:00:00+0000'},
{'value': 4, 'end_time': '2020-09-12T07:00:00+0000'}]},
{'name': 'reach',
'values': [{'value': 0, 'end_time': '2020-09-11T07:00:00+0000'},
{'value': 1, 'end_time': '2020-09-12T07:00:00+0000'},
{'value': 1, 'end_time': '2020-09-13T07:00:00+0000'},
{'value': 2, 'end_time': '2020-09-14T07:00:00+0000'}]}]
名字是唯一的吗?如果是这样,为什么这是一个字典列表,而不是一个以名称为键的字典?这将使这更容易、更快。@MarkMeyer是的,名称是唯一的。事实上,这是api请求的响应。你是对的,我尝试了一些方法,但没有成功,没有发布我自己的努力是由于缺乏关注。谢谢
[{'name': 'impressions',
'values': [{'value': 0, 'end_time': '2020-09-11T07:00:00+0000'},
{'value': 4, 'end_time': '2020-09-12T07:00:00+0000'}]},
{'name': 'reach',
'values': [{'value': 0, 'end_time': '2020-09-11T07:00:00+0000'},
{'value': 1, 'end_time': '2020-09-12T07:00:00+0000'},
{'value': 1, 'end_time': '2020-09-13T07:00:00+0000'},
{'value': 2, 'end_time': '2020-09-14T07:00:00+0000'}]}]