嵌套的默认词典计数值
问题描述:
我有一个defaultdict与我尝试获取值的总和嵌套字典。但我一直在努力寻找办法做到这一点。嵌套的默认词典计数值
在下面的例子,我想数着count
值:
from collections import defaultdict
x = defaultdict(dict)
x['test1']['count'] = 14
x['test4']['count'] = 14
x['test2']['count'] = 14
x['test3']['count'] = 14
print x
""" methods I've tried """
# print x.values()
# print sum(x for y in x.values() for x in y['count'].iteritems())
# print sum(x.itervalues())
上面,我试过的方法(在许多不同的变化)未提供所需的结果。
任何线索或协助我可能在哪里出错?
答
如果你有caluculate只是'count'
关键的总和,你可以这样做:
>>> sum(y['count'] for y in x.values())
56
如果有其他键以及(除了“计数”)的可能性,并要计算所有值的总和,那么你要做的:
>>> sum(z for y in x.values() for z in y.values())
56
# OR,
# import itertools
# sum(itertools.chain(*[y.values() for y in x.values()]))
答
只需sum(x[k]['count'] for k in x)
应该工作。
答
如果要总结所有子字典的值,总和的两倍:
>>> sum(sum(y.values()) for y in x.values())
56