开发手册 欢迎您!
软件开发者资料库

Python 合并两个字典(Dictionary)中相同key的value的方法及示例代码

本文主要介绍Python,通过两个字典(Dictionary)中相同key,将对应的value合并的方法,以及相关的示例代码。

示例字典:

d1 = { 'a': [2,4,5,6,8,10], 'b': [1,2,5,6,9,12], 'c': [0,4,5,8,10,21] }d2 = { 'a': [12,15], 'b': [14,16], 'c': [23,35]  }

合并后效果:

{'a': [2, 4, 5, 6, 8, 10, 12, 15],
'b': [1, 2, 5, 6, 9, 12, 14, 16],
'c': [0, 4, 5, 8, 10, 21, 23, 35]}

1、使用字典生成表达式

 1 = { 'a': [2,4,5,6,8,10], 'b': [1,2,5,6,9,12], 'c': [0,4,5,8,10,21] }d2 = { 'a': [12,15], 'b': [14,16], 'c': [23,35]  }
{key: d1[key] + d2[key] for key in d1}
{'a': [2, 4, 5, 6, 8, 10, 12, 15],
'b': [1, 2, 5, 6, 9, 12, 14, 16],
'c': [0, 4, 5, 8, 10, 21, 23, 35]}

或者

combined_keys = d1.keys() | d2.keys()
d_comb = {key: d1.get(key, []) + d2.get(key, []) for key in combined_keys}

或者

d_comb = {key:[*d1[key], *d2[key]] for key in d1}print(d_comb)

2、使用for循环实现

d1 = {'a': [2, 4, 5, 6, 8, 10], 'b': [1, 2, 5, 6, 9, 12], 'c': [0, 4, 5, 8, 10, 21], 'e':[0,0,0]}
d2 = {'a': [12, 15], 'b': [14, 16], 'c': [23, 35], 'd': [13, 3]}
d2_keys_not_in_d1 = d2.keys() - d1.keys()
d1_keys_not_in_d2 = d1.keys() - d2.keys()
common_keys = d2.keys() & d1.keys()
for i in common_keys:
d[i]=d1[i]+d2[i]
for i in d1_keys_not_in_d2:
d[i]=d1[i]
for i in d2_keys_not_in_d1:
d[i]=d2[i]
d
{'a': [2, 4, 5, 6, 8, 10, 12, 15],
'b': [1, 2, 5, 6, 9, 12, 14, 16],
'c': [0, 4, 5, 8, 10, 21, 23, 35],
'd': [13, 3],
'e': [0, 0, 0]}

3、使用itertools.chain实现

文档itertools.chain

from itertools import chain
d_comb = {key: list(chain(d1[key], d2[key])) for key in d1}

相关文档Python 两个字典(dic)中相同key合并(value分别作合成后字典key和value)