2017-01-09 72 views
0

我有一个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()) 

上面,我试过的方法(在许多不同的变化)未提供所需的结果。

任何线索或协助我可能在哪里出错?

回答

1

如果你有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()])) 
1

只需sum(x[k]['count'] for k in x)应该工作。

1

如果要总结所有子字典的值,总和的两倍:

>>> sum(sum(y.values()) for y in x.values()) 
56