it-swarm.com.de

Wie summiere ich alle Werte in einem Wörterbuch?

Angenommen, ich habe ein Wörterbuch, in dem die Tasten 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 zurückzugeben - d.h. 62 in diesem Fall?

189
nedblorf

Wie Sie es erwarten würden:

sum(d.values())

In Python <3 möchten Sie möglicherweise stattdessen itervalues verwenden (wodurch keine temporäre Liste erstellt wird).

368
phihag

In Python 2 können Sie das Erstellen einer temporären Kopie aller Werte vermeiden, indem Sie die Dictionary-Methode itervalues() verwenden, die einen Iterator der Dictionary-Schlüssel zurückgibt:

sum(d.itervalues())

In Python 3 können Sie einfach d.values() verwenden, da diese Methode zu diesem Zweck geändert wurde (und itervalues() entfernt wurde, da sie nicht mehr benötigt wurde).

Um es einfacher zu machen, versionsunabhängigen Code zu schreiben, der immer über die Werte der Wörterbuchschlüssel iteriert, kann eine Utility-Funktion hilfreich sein:

import sys

def itervalues(d):
    return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())

sum(itervalues(d))

Dies ist im Wesentlichen das, was Benjamin Petersons Modul six tut.

66
martineau

Sicher gibt es. Hier ist eine Möglichkeit, die Werte eines Wörterbuchs zu summieren.

>>> d = {'key1':1,'key2':14,'key3':47}
>>> sum(d.values())
62
12
vz0
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)

sie können dies mit der for-Schleife tun

3
Kalyan Pendyala

Ich bin der Meinung, dass sum(d.values()) der effizienteste Weg ist, um die Summe zu erhalten.

Sie können auch die Reduktionsfunktion verwenden, um die Summe zusammen mit einem Lambda-Ausdruck zu berechnen:

reduce(lambda x,y:x+y,d.values())
2

sum (d.values ​​()) - "d" -> Ihre Wörterbuchvariable

1
Behlul Valiyev