我有2个python词典:
x = {'bookA': 1, 'bookB': 2, 'bookC': 3, 'bookD': 4, 'bookE': 5}
y = {'bookB': 1, 'bookD': 2, 'bookF': 3, 'bookL': 4, 'bookX': 5}
我想合并上面两个字典并创建另一个字典。 我试过这段代码:
z = {**x, **y}
但在这种情况下,关键值是重写。我想要一个字典,如果有重复,添加它们的值或其他一些动作也可以像减法,乘法等那样。所以我的座右铭不是覆盖重复值,而是如果有任何重复就执行一些操作。 任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
选项1
将x
和y
转换为collections.Counter
个对象,然后将它们相加(Counter
支持__add__
ition。)
from collections import Counter
z = dict(Counter(x) + Counter(y))
z
{'bookA': 1,
'bookB': 3,
'bookC': 3,
'bookD': 6,
'bookE': 5,
'bookF': 3,
'bookL': 4,
'bookX': 5}
选项2
你可以用dict.pop
-
z = {k : x[k] + y.pop(k, 0) for k in x}
现在,使用z
-
y
z.update(y)
或者,
z = {**z, **y} # python3.6
z
{'bookA': 1,
'bookB': 3,
'bookC': 3,
'bookD': 6,
'bookE': 5,
'bookF': 3,
'bookL': 4,
'bookX': 5}