我有 2 个列表,其中包含如下所示的对象:
列表 1:
{'name': 'Nick', 'id': '123456'}
list 2:
{'address': 'London', 'id': '123456'}
现在我想创建第三个列表,包含如下所示的对象:
{'name': 'Nick', 'address': 'London', 'id': '123456'}
即,我想找到匹配的 ID,并合并这些对象。
最佳答案
您可以使用 groupby
获取所有匹配的字典,然后使用 ChainMap
统一它们,如下所示:
from itertools import groupby
from operator import itemgetter
from collections import ChainMap
list1 = [{'name': 'Nick', 'id': '123456'}, {'name': 'Donald', 'id': '999'}]
list2 = [{'address': 'London', 'id': '123456'}, {'address': 'NYC', 'id': '999'}]
grouped_subdicts = groupby(sorted(list1 + list2, key=itemgetter("id")), itemgetter("id"))
result = [dict(ChainMap(*g)) for k, g in grouped_subdicts]
print(result)
输出:
[{'id': '123456', 'address': 'London', 'name': 'Nick'},
{'id': '999', 'address': 'NYC', 'name': 'Donald'}]
关于python - 合并 2 个包含具有匹配 ID 的对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57041468/