Python 合并2个包含OBEJCT和匹配ID的列表
我有两个列表,其中包含如下所示的对象:Python 合并2个包含OBEJCT和匹配ID的列表,python,Python,我有两个列表,其中包含如下所示的对象: {'name': 'Nick', 'address': 'London', 'id': '123456'} 清单1: {'name': 'Nick', 'id': '123456'} 清单2: {'address': 'London', 'id': '123456'} 现在我想创建第三个列表,其中包含如下所示的对象: {'name': 'Nick', 'address': 'London', 'id': '123456'} i、 e,我想找到匹配的
{'name': 'Nick', 'address': 'London', 'id': '123456'}
清单1:
{'name': 'Nick', 'id': '123456'}
清单2:
{'address': 'London', 'id': '123456'}
现在我想创建第三个列表,其中包含如下所示的对象:
{'name': 'Nick', 'address': 'London', 'id': '123456'}
i、 e,我想找到匹配的id,并合并这些对象。您可以使用获取所有匹配的dict,然后使用统一它们,如下所示:
{'name': 'Nick', 'address': 'London', 'id': '123456'}
从itertools导入groupby
从运算符导入itemgetter
从集合导入链映射
列表1=[{'name':'Nick','id':'123456'},{'name':'Donald','id':'999'}]
列表2=[{'address':'London','id':'123456'},{'address':'NYC','id':'999'}]
grouped_subdcts=groupby(排序(list1+list2,key=itemgetter(“id”)),itemgetter(“id”))
结果=[k的dict(ChainMap(*g)),g在分组的_子块中]
打印(结果)
输出:
[{'id': '123456', 'address': 'London', 'name': 'Nick'},
{'id': '999', 'address': 'NYC', 'name': 'Donald'}]
同一列表中是否有重复的
id
s?如果需要定义冲突策略(取第一个?取最后一个?抛出错误?),那么set(列表1中x的x['id'])==set(列表2中x的x['id'])
?@0x5453无重复项:)最多只能有两个相同的id。这些是dict,而不是对象。你来自Javascript,是吗?:)这很好。另外,您可以理解分组子目录
并将dict(ChainMap(g))
应用于每个分组,而不是在分组子目录
上编写for
循环,并使用更新
。@KyleParsons真棒!!我讨厌循环:P谢谢!