Disons que j'ai un dictionnaire dans lequel les clés correspondent à des entiers comme:
d = {'key1': 1,'key2': 14,'key3': 47}
Existe-t-il une manière syntaxiquement minimaliste de renvoyer la somme des valeurs dans d
—ie 62
dans ce cas?
python
dictionary
hash
sum
nedblorf
la source
la source
sum
vous implémenter en termes dereduce
-reduce
est une forme plus générale (par exemplesum
,min
etmax
peut être écrite en termes dereduce
) et peut résoudre d'autres problèmes (par exempleproduct
) facilement.Réponses:
Comme vous vous en doutez:
la source
Python 2.7.12
fonctionne aussi bien avecsum(d.values())
d.values()
.Dans Python 2, vous pouvez éviter de faire une copie temporaire de toutes les valeurs en utilisant la
itervalues()
méthode du dictionnaire, qui renvoie un itérateur des clés du dictionnaire:Dans Python 3, vous pouvez simplement l'utiliser
d.values()
parce que cette méthode a été modifiée pour cela (et aitervalues()
été supprimée car elle n'était plus nécessaire).Pour faciliter l'écriture de code indépendant de la version qui itère toujours sur les valeurs des clés du dictionnaire, une fonction utilitaire peut être utile:
C'est essentiellement ce que fait le
six
module de Benjamin Peterson .la source
Bien sûr que oui. Voici un moyen de résumer les valeurs d'un dictionnaire.
la source
vous pouvez le faire en utilisant la boucle for
la source
Je ressens
sum(d.values())
c'est le moyen le plus efficace pour obtenir la somme.Vous pouvez également essayer la fonction de réduction pour calculer la somme avec une expression lambda:
la source
sum (d.values ()) - "d" -> Votre dictionnaire Variable
la source
la réponse de phihag (et les réponses similaires) ne fonctionnera pas en python3.
Pour python 3:
Mettre à jour! On se plaint que cela ne fonctionne pas! Je joins simplement une capture d'écran de mon terminal. Il pourrait y avoir un décalage dans les versions, etc.
la source
Vous pouvez envisager `` pour la boucle '' pour cela:
total = 800
la source
sum(d.values())
, puisque.values()
renvoie aList
.Vous pouvez obtenir un générateur de toutes les valeurs du dictionnaire, puis le convertir en liste et utiliser la fonction sum () pour obtenir la somme de toutes les valeurs.
Exemple:
la source