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

、あなたが行うことができますすべての値の合計、次にあなたがしなければならない。

>>> 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)が動作するはずです。 (離れて「数」から)、同様に他のキーを持つ可能性がある場合は

>>> sum(y['count'] for y in x.values()) 
56 

を、あなたは計算したい:あなただけ'count'キーの合計をcaluculateする必要がある場合

1

あなたはすべてのサブディクショナリの値を合計したい場合は、合計二回:

>>> sum(sum(y.values()) for y in x.values()) 
56 
関連する問題