gpt4 book ai didi

python - 求和多个python字典的对应元素

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:14 27 4
gpt4 key购买 nike

我有任意数量的等长 python 字典和匹配的键集,如下所示:

{'a':1, 'b':4, 'c':8, 'd':9}

{'a':2, 'b':3, 'c':2, 'd':7}

{'a':0, 'b':1, 'c':3, 'd':4}
...

如何获得具有相同键集但值作为字典集中相应元素之和的单个字典?换句话说,我想要:

{'a':3, 'b':8, 'c':13, 'd':20}

也许有一个丑陋、复杂的循环结构,但是有没有更好的方法来利用某种列表/字典理解的智慧来做到这一点?想想看,我真的不确定如何制作一个丑陋的循环版本,无论如何..

最佳答案

collections.Counter() 拯救 ;-)

from collections import Counter
dicts = [{'a':1, 'b':4, 'c':8, 'd':9},
{'a':2, 'b':3, 'c':2, 'd':7},
{'a':0, 'b':1, 'c':3, 'd':4}]
c = Counter()
for d in dicts:
c.update(d)

然后:

>>> print c
Counter({'d': 20, 'c': 13, 'b': 8, 'a': 3})

或者您可以将其改回字典:

>>> print dict(c)
{'a': 3, 'c': 13, 'b': 8, 'd': 20}

Counter() 是否所有输入字典都具有相同的键并不重要。如果您确定他们这样做,您可以尝试荒谬的 ;-) 像这样的单行代码:

d = {k: v for k in dicts[0] for v in [sum(d[k] for d in dicts)]}

Counter() 更清晰、更快、更灵活。不过,公平地说,这个稍微不那么荒谬的单行是不那么荒谬的:

d = {k: sum(d[k] for d in dicts) for k in dicts[0]}

关于python - 求和多个python字典的对应元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19461747/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com