Python中如何将字典列表元素与另一字典列表对应元素合并?
Python实现对应位置字典列表合并的几种方法
这里有几种实用的方法可以实现两个字典列表对应位置的合并:
方法1:列表推导式 + 字典解包(Python 3.5+)
利用字典解包语法**将两个字典的键值对合并到新字典中,代码简洁直观:
newDict = [{'id': 1}, {'id': 2}] myData = [{'title': 'Bar', 'barname': 'Archer'}, {'title': 'Bar', 'barname': 'Archer'}] merged = [{**d1, **d2} for d1, d2 in zip(newDict, myData)] print(merged) # 输出:[{'id': 1, 'title': 'Bar', 'barname': 'Archer'}, {'id': 2, 'title': 'Bar', 'barname': 'Archer'}]
zip(newDict, myData)会把两个列表中对应位置的字典配对,**d1和**d2将字典的键值对解包后合并,若存在重复键,后面字典的键值会覆盖前面的。
方法2:Python 3.9+ 专用字典合并运算符|
Python 3.9及以上版本支持用|直接合并两个字典,写法更简洁:
merged = [d1 | d2 for d1, d2 in zip(newDict, myData)] print(merged)
d1 | d2会生成一个包含两个字典所有键值对的新字典,重复键同样以后面的字典为准。
方法3:循环遍历 + update方法(适合新手理解)
通过循环逐个处理每一对字典,使用update方法合并:
merged = [] for d1, d2 in zip(newDict, myData): combined_dict = {} combined_dict.update(d1) # 先加入第一个字典的内容 combined_dict.update(d2) # 再加入第二个字典的内容,重复键会被覆盖 merged.append(combined_dict) print(merged)
注意事项
如果两个列表长度不一致,zip会以较短的列表长度为准。若需要保留较长列表中剩余的元素,可以使用itertools.zip_longest,并处理空字典的情况。
内容的提问来源于stack exchange,提问作者Cason Mercadejas
相关产品推荐
相关产品推荐

