Python 对列表中第一个项目相同的项目进行分组

Python 对列表中第一个项目相同的项目进行分组,python,Python,如何根据第一个项目对列表中的项目进行分组?例如: list= [{'main': 0328, 'a':1},{'main': 0328, 'b': 2},{'main': 0486, 'a': 5},{'main': 0486, 'b': 6}] 将转变为: list [{'main: 0328','a':1, 'b':2}, {'main': 0486, 'a':5, 'b': 6}] 或者这更好: list [{'a':1, 'b':2}, {'a':5, 'b': 6}] 使用ite

如何根据第一个项目对列表中的项目进行分组?例如:

list= [{'main': 0328, 'a':1},{'main': 0328, 'b': 2},{'main': 0486, 'a': 5},{'main': 0486, 'b': 6}]
将转变为:

list [{'main: 0328','a':1, 'b':2}, {'main': 0486, 'a':5, 'b': 6}]
或者这更好:

list [{'a':1, 'b':2}, {'a':5, 'b': 6}]

使用
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}]
输出:

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}]

以下是我的建议,简短、易读且优雅:

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}]

通过编写一些代码,我想。请分享你是如何尝试解决这个问题的。一些你尝试过的python代码。谢谢!我已经试过有序和默认的dict,但这是一个有效的。谢谢你提供一个详细而简单的答案:)不客气,先生!请考虑选择最佳答案,并投票选出有用的答案。