假设我有两个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}
如果两个字典有相同的键->值对,它应该保持不变,如果有不同值的相同键,它应该相加。
我该怎么做呢?
发布于 2018-08-18 08:46:07
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}
发布于 2018-08-18 09:05:40
您可以将字典理解与自定义函数一起使用。我们通过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}
https://stackoverflow.com/questions/51903204
复制相似问题