如何添加/添加两个或两个以上的Python字典?

时间:2018-08-17 21:40:49

标签: python python-3.x dictionary

让我们说我有两个python字典:

dct_01 = {'a': 1, 'b': 2, 'c': 3}
dct_02 = {'a': 2, 'b': 1, 'c': 3, 'd': 4}

我想要:

dct_03 = {'a': 3, 'b': 3, 'c': 3, 'd': 4}

如果两个字典都具有相同的key-> value对,则应保持不变,如果相同的key具有不同的值,则应加起来。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

m = {}
for i in dct_01.keys()|dct_02.keys():
   v1 = dct_01.get(i)
   v2 = dct_02.get(i)
   if v1==v2: m[i] = v1
   elif v1 is None: m[i] = v2
   elif v2 is None: m[i] = v1
   else: m[i] = v1+v2

m
{'d': 4, 'c': 3, 'a': 3, 'b': 3}

答案 1 :(得分:0)

您可以将字典理解与自定义功能一起使用。我们通过set(dct_01) | set(dct_02)计算字典键的并集并对其进行迭代。

dct_01 = {'a': 1, 'b': 2, 'c': 3}
dct_02 = {'a': 2, 'b': 1, 'c': 3, 'd': 4}

def calc_val(d1, d2, k):
    val1 = d1.get(k, 0)
    val2 = d2.get(k, 0)
    if val1 == val2:
        return val1
    return val1 + val2

res = {k: calc_val(dct_01, dct_02, k) for k in set(dct_01) | set(dct_02)}

print(res)

{'b': 3, 'a': 3, 'c': 3, 'd': 4}