我有两个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)]
[('a', 1), ('c', 1), ('b', 5), ('d', 5)]
c = -3 + 4 = 1 是正确的,因此负输入不是问题,但输出中缺少e:0和f:-1
c = -3 + 4 = 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}