python - 合并 2 个包含具有匹配 ID 的对象的列表

标签 python

我有 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/

相关文章:

python - tkinter 标签不尊重 justify 选项?

python - Discord.py music_cog,机器人加入 channel 但不播放声音

python - PySpark 拖放行

python - 如何在每个单词后的文本文件中添加换行符

python - 在x节点minidom xml python之后插入

python - 使用模块 __getattr__ 时如何回退到默认值

python - 在 Python 中打开文本文件时出现问题

python - 在 python 列表中查找最大值和索引?

python - 如何在python中的两个值之间选择一个列表 block

python - 为什么 print ("string", object) 会给出与 print(object) 不同的结果?