2 回答
TA贡献1111条经验 获得超0个赞
使用 itertools.groupby
演示:
from itertools import groupby
l= [{'main': 328, 'a':1},{'main': 328, 'b': 2},{'main': 486, 'a': 5},{'main': 486, 'b': 6}]
res = []
for key, group in groupby(l, lambda x: x["main"]):
d = {}
for i in group:
del i['main']
d.update(i)
res.append(d)
print(res)
输出:
[{'a': 1, 'b': 2}, {'a': 5, 'b': 6}]
TA贡献1810条经验 获得超5个赞
这是我的建议,简短,易读且优雅的恕我直言:
from collections import defaultdict
myList= [{'main': 328, 'a':1},{'main': 328, 'b': 2},{'main': 486, 'a': 5},{'main': 486, 'b': 6}]
myDict = defaultdict(dict)
for d in myList:
myDict[d.pop('main')].update(d)
print(myDict) # {328: {'a': 1, 'b': 2}, 486: {'a': 5, 'b': 6}}
print(myDict.values()) # [{'a': 1, 'b': 2}, {'a': 5, 'b': 6}]
添加回答
举报