Digamos que tengo un diccionario en el que las teclas se asignan a enteros como:
d = {'key1': 1,'key2': 14,'key3': 47}
¿Existe una forma sintácticamente minimalista de devolver la suma de los valores en d
—ie 62
en este caso?
python
dictionary
hash
sum
nedblorf
fuente
fuente
sum
impleméntese en términos dereduce
-reduce
es una forma más general (por ejemplosum
,min
ymax
puede escribirse en términos dereduce
) y puede resolver otros problemas (por ejemploproduct
) fácilmente.Respuestas:
Como es de esperar:
fuente
Python 2.7.12
también funciona bien consum(d.values())
d.values()
.En Python 2, puede evitar hacer una copia temporal de todos los valores utilizando el
itervalues()
método del diccionario, que devuelve un iterador de las claves del diccionario:En Python 3 puedes usarlo
d.values()
porque ese método se cambió para hacerlo (yitervalues()
se eliminó porque ya no era necesario).Para facilitar la escritura del código independiente de la versión que siempre itera sobre los valores de las teclas del diccionario, una función de utilidad puede ser útil:
Esto es esencialmente lo que hace el
six
módulo de Benjamin Peterson .fuente
Claro que lo hay. Aquí hay una manera de sumar los valores de un diccionario.
fuente
puedes hacerlo usando el bucle for
fuente
Creo que
sum(d.values())
es la forma más eficiente de obtener la suma.También puede probar la función reducir para calcular la suma junto con una expresión lambda:
fuente
sum (d.values ()) - "d" -> Su variable de diccionario
fuente
La respuesta de phihag (y otras similares) no funcionará en python3.
Para python 3:
¡Actualizar! Hay quejas de que no funciona! Acabo de adjuntar una captura de pantalla desde mi terminal. Podría haber algún desajuste en las versiones, etc.
fuente
Podría considerar 'for loop' para esto:
total = 800
fuente
sum(d.values())
, ya que.values()
devuelve aList
.Puede obtener un generador de todos los valores en el diccionario, luego convertirlo en una lista y usar la función sum () para obtener la suma de todos los valores.
Ejemplo:
fuente