2017-01-09 131 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