让我们说我有两个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具有不同的值,则应加起来。
我该怎么做?
答案 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}