Angenommen, ich habe ein Wörterbuch, in dem die Schlüssel Ganzzahlen wie folgt zugeordnet sind:
d = {'key1': 1,'key2': 14,'key3': 47}
Gibt es eine syntaktisch minimalistische Möglichkeit, die Summe der Werte in - d
dh 62
in diesem Fall - zurückzugeben?
python
dictionary
hash
sum
nedblorf
quelle
quelle
sum
Sie sich in Bezug aufreduce
-reduce
ist eine allgemeinere Form (zBsum
,min
undmax
alle in Bezug auf die geschrieben werden kannreduce
) und kann andere Probleme (zB lösenproduct
) leicht.Antworten:
Wie zu erwarten:
quelle
Python 2.7.12
funktioniert auch gut mitsum(d.values())
d.values()
.In Python 2 können Sie mithilfe der
itervalues()
Wörterbuchmethode, die einen Iterator der Schlüssel des Wörterbuchs zurückgibt, vermeiden, eine temporäre Kopie aller Werte zu erstellen:In Python 3 können Sie nur verwenden,
d.values()
weil diese Methode geändert wurde (unditervalues()
entfernt wurde, da sie nicht mehr benötigt wurde).Um das Schreiben von versionunabhängigem Code zu vereinfachen, der immer über die Werte der Wörterbuchschlüssel iteriert, kann eine Dienstprogrammfunktion hilfreich sein:
Dies ist im Wesentlichen das
six
Modul von Benjamin Peterson .quelle
Sicher gibt es. Hier ist eine Möglichkeit, die Werte eines Wörterbuchs zu summieren.
quelle
Sie können dies mit der for-Schleife tun
quelle
Ich denke, es
sum(d.values())
ist der effizienteste Weg, um die Summe zu erhalten.Sie können auch die Reduktionsfunktion ausprobieren, um die Summe zusammen mit einem Lambda-Ausdruck zu berechnen:
quelle
sum (d.values ()) - "d" -> Ihre Wörterbuchvariable
quelle
Die Antwort von phihag (und ähnliche) funktioniert in python3 nicht.
Für Python 3:
Aktualisieren! Es gibt Beschwerden, dass es nicht funktioniert! Ich hänge einfach einen Screenshot von meinem Terminal an. Könnte in Versionen usw. nicht übereinstimmen.
quelle
Sie könnten 'for loop' in Betracht ziehen:
gesamt = 800
quelle
sum(d.values())
, da.values()
gibt a zurückList
.Sie können einen Generator aller Werte im Wörterbuch abrufen, ihn dann in eine Liste umwandeln und die Funktion sum () verwenden, um die Summe aller Werte abzurufen.
Beispiel:
quelle