小编典典

当净值不是正数时,将两个python字典合并为一个

python

我有两个python字典,试图将这些值加在一起。答案是:是否有任何Python方式将两个字典组合在一起(为同时出现在两个字典中的键添加值)?让我一路顺风。但是,在某些情况下,净值可能为零或负,但我仍然希望最终字典中的值。即使Counters接受负值,也只会输出大于零的值。

from collections import Counter   
A = Counter({'a': 1, 'b': 2, 'c': -3, 'e': 5, 'f': 5})
B = Counter({'b': 3, 'c': 4, 'd': 5, 'e': -5, 'f': -6})
C = A + B
print(C.items())

输出: [('a', 1), ('c', 1), ('b', 5), ('d', 5)]

c = -3 + 4 = 1 是正确的,因此负输入不是问题,但输出中缺少e:0和f:-1

如何执行求和并输出所有值?


阅读 175

收藏
2021-01-20

共1个答案

小编典典

怎么样:

dict((x, a.get(x, 0) + b.get(x, 0)) for x in set(a)|set(b))

例:

>>> a = {'a':1, 'b':2, 'c':-3, 'e':5, 'f': 5}
>>> b = {'b':3, 'c':4, 'd':5, 'e':-5, 'f': -6}
>>>
>>> dict((x, a.get(x, 0) + b.get(x, 0)) for x in set(a)|set(b))
{'e': 0, 'a': 1, 'f': -1, 'd': 5, 'c': 1, 'b': 5}
2021-01-20