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

发布于 2021-01-29 14:58:11

这个问题已经在这里有了答案

添加计数器会删除键 (2个答案)

12个月前关闭。

我有两个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

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

关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    怎么样:

    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}
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看