2013-02-21 17 views
5

Ich habe ein Wörterbuch, das Key:Values.Python: Summe Werte in einem Wörterbuch basiert auf Bedingung

Die Werte sind ganze Zahlen hat. Ich möchte eine Summe der Werte basierend auf einer Bedingung erhalten ... sage alle Werte> 0 (d. H.).

Ich habe ein paar Varianten ausprobiert, aber nichts scheint zu funktionieren.

+1

Siehe http://stackoverflow.com/questions/11692613/python-sum-values-in-dictionary – user1929959

Antwort

1
>>> a = {'a' : 5, 'b': 8} 
>>> sum(value for _, value in a.items() if value > 0) 
9

Versuchen Sie, die values Methode auf dem Wörterbuch verwenden (die einen Generator in Python 3.x zurückgibt), durch jeden Wert Iterieren und Summieren, wenn er größer als 0 (oder was auch immer Ihr Zustand ist) ist:

In [1]: d = {'one': 1, 'two': 2, 'twenty': 20, 'negative 4': -4} 

In [2]: sum(v for v in d.values() if v > 0) 
Out[2]: 23 
+0

Wow, das könnte das beste Beispiel sein, das ich von einer knappen Erklärung im Englischen gesehen habe, die einem Generatorausdruck zuordnet so offensichtlich, dass du nicht einmal sagen musst, dass du das machst. Ich wünschte, ich könnte mehr als +1 geben. – abarnert

+0

@abarnert Komme von dir, das ist ein Kompliment, danke :) – RocketDonkey

+0

genial. Vielen Dank. – user2097496

Verwandte Themen