2017-01-09 5 views
0

Ich habe ein Standarddict mit einem verschachtelten Wörterbuch, von dem ich versuche, die Summe der Werte zu erhalten. Aber ich habe mich bemüht, einen Weg zu finden, dies zu tun.verschachtelte Standardwörterbuchzählwerte

Im Beispiel unten, ich versuche die count alle Werte zu zählen:

darüber (in vielen verschiedenen Variationen) nicht die gewünschten Ergebnisse nicht Ich habe versucht,
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()) 

Die Methoden liefern.

Irgendwelche Hinweise oder Hilfe, wo ich möglicherweise einen Fehler mache?

Antwort

1

Wenn Sie Summe von nur 'count' Schlüssel caluculate haben, können Sie tun:

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

Wenn es eine Möglichkeit, mit anderen Tasten ist auch (abgesehen von ‚count‘), und Sie möchten berechnen, Summe aller Werte, dann müssen Sie tun:

>>> 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

Nur sum(x[k]['count'] for k in x) sollte funktionieren.

1

Wenn Sie die Werte aller Unter Wörterbücher, Summe zweimal summieren möchten:

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