我有一本计数器字典,例如:
from collections import Counter, defaultdict
numbers = defaultdict(Counter)
numbers['a']['first'] = 1
numbers['a']['second'] = 2
numbers['b']['first'] = 3
我想求和:1+2+3 = 6
在 python 3 中执行此操作的最简单/惯用的方法是什么?
最佳答案
使用嵌套理解:
sum(x for counter in numbers.values() for x in counter.values())
或者先对计数器求和(从一个空的开始),然后对它们的值求和:
sum(sum(numbers.values(), Counter()).values())
或者首先是每个计数器的值,然后是中间结果:
sum(sum(c.values()) for c in numbers.values())
或者使用链:
from itertools import chain
sum(chain.from_iterable(d.values() for d in numbers.values()))
我更喜欢第一种方式。
关于python - python中所有嵌套字典的值总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350698/