338 votes

Somme de toutes les valeurs dans un dict Python

Je suis novice en Python. Disons que j'ai un dictionnaire dans lequel les clés correspondent à des nombres entiers, par exemple :

d = {'key1':1,'key2':14,'key3':47}

Existe-t-il un moyen syntaxiquement minimaliste de renvoyer la somme des valeurs de d, c'est-à-dire 62 dans ce cas.

Merci

2 votes

Juste pour le plaisir : mettre en œuvre sum vous-même en termes de reduce -- reduce est une forme plus générale (par ex. sum , min y max peuvent tous être écrits en termes de reduce ) et peut résoudre d'autres problèmes (par ex. product ) facilement.

1 votes

Qu'en est-il de la déclaration de Guido - je pense que je m'en souviens bien - que réduire va disparaître ? Je suis d'accord avec vous. Pourquoi le supprimer du langage ?

5voto

Behlul Valiyev Points 41

Sum(d.values()) - "d" -> Votre variable de dictionnaire

4voto

Tamil Selvan S Points 95

UTILISEZ sum() POUR FAIRE LA SOMME DES VALEURS D'UN DICTIONNAIRE.

Appelez dict.values() pour retourner les valeurs d'un dictionnaire dict. Utilisez sum(values) pour retourner la somme des valeurs de l'étape précédente.

d = {'key1':1,'key2':14,'key3':47}
values = d.values()
#Return values of a dictionary    
total = sum(values)
print(total)

3voto

user2046399 Points 6

La réponse de phihag (et d'autres similaires) ne fonctionnera pas dans python3.

Pour python 3 :

d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))

Mise à jour ! Il y a des plaintes qu'il ne fonctionne pas ! Je viens de joindre une capture d'écran de mon terminal. Il peut y avoir un décalage entre les versions, etc.

enter image description here

0 votes

Le même problème existe même si nous essayons de cette façon

0 votes

Ça marche très bien pour moi ! J'ai mis à jour ma réponse avec une capture d'écran (je ne peux pas le faire ici) ; cela pourrait avoir quelque chose à voir avec les versions...

0voto

Rahul Patel Points 56

Vous pouvez envisager d'utiliser une "boucle for" pour cela :

  d = {'data': 100, 'data2': 200, 'data3': 500}
  total = 0
  for i in d.values():
        total += i

total = 800

1 votes

Ou juste sum(d.values()) ya que .values() renvoie un List .

0 votes

Oui, c'est aussi un autre moyen.

0voto

nemo Points 680

La solution la plus simple ou la plus stupide :

https://trinket.io/python/a8a1f25353

d = {'key1': 1,'key2': 14,'key3': 47}
s = 0
for k in d:
    s += d[k]

print(s)

ou si vous le voulez plus sophistiqué :

https://trinket.io/python/5fcd379536

import functools

d = {'key1': 1,'key2': 14,'key3': 47}
s = functools.reduce(lambda acc,k: acc+d[k], d, 0)

print(s)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X