为了账号安全,请及时绑定邮箱和手机立即绑定

如何对字典元素求和

如何对字典元素求和

杨魅力 2019-11-02 13:45:29
在Python中,我有字典列表:dict1 = [{'a':2, 'b':3},{'a':3, 'b':4}]我想要一个最终的字典,其中将包含所有字典的总和。即结果将是:{'a':5, 'b':7}注意:列表中的每个字典将包含相同数量的键,值对。
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您可以使用collections.Counter


counter = collections.Counter()

for d in dict1: 

    counter.update(d)

或者,如果您更喜欢单线:


functools.reduce(operator.add, map(collections.Counter, dict1))


查看完整回答
反对 回复 2019-11-02
?
心有法竹

TA贡献1866条经验 获得超5个赞

sum()当添加多个命令时,利用杠杆应该可以获得更好的性能


>>> dict1 = [{'a':2, 'b':3},{'a':3, 'b':4}]

>>> from operator import itemgetter

>>> {k:sum(map(itemgetter(k), dict1)) for k in dict1[0]}        # Python2.7+

{'a': 5, 'b': 7}

>>> dict((k,sum(map(itemgetter(k), dict1))) for k in dict1[0])  # Python2.6

{'a': 5, 'b': 7}

加上斯蒂芬的建议


>>> {k: sum(d[k] for d in dict1) for k in dict1[0]}            # Python2.7+

{'a': 5, 'b': 7}

>>> dict((k, sum(d[k] for d in dict1)) for k in dict1[0])      # Python2.6

{'a': 5, 'b': 7}

我认为Stephan的Python2.7代码版本读起来非常好


查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 2287 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信