如何在不使用计数器方法的情况下结合两个用于通用键的字典加值?
d1 = {'a': 100, 'b': 200, 'c':300}
d2 = {'a': 300, 'b': 200, 'd':400}
输出-
{'a': 400, 'b': 400, 'd': 400, 'c': 300}
答案 0 :(得分:2)
您可以进行设置操作,迭代d1
和d2
的并集中的键并求和相应的值。
res = {k: d1.get(k, 0) + d2.get(k, 0) for k in set(d1) | set(d2)}
输出
{'b': 400, 'd': 400, 'a': 400, 'c': 300}
答案 1 :(得分:1)
您可以通过itertools.chain将两个字典链接在一起,从而同时迭代两个字典,然后将通用键的值相加
import itertools
d1 = {'a': 100, 'b': 200, 'c':300}
d2 = {'a': 300, 'b': 200, 'd':400}
new_dict = {}
#Chain d1 and d2 together
for k, v in itertools.chain(d1.items(), d2.items()):
#Add up values for common keys
if k in new_dict:
new_dict[k] += v
else:
new_dict[k] = v
print(new_dict)
输出将为
{'a': 400, 'b': 400, 'c': 300, 'd': 400}