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?
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?
Respuestas:
Como es de esperar:
sum(d.values())
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:
sum(d.itervalues())
En Python 3 puedes usarlo d.values()
porque ese método se cambió para hacerlo (y itervalues()
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:
import sys
def itervalues(d):
return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())
sum(itervalues(d))
Esto es esencialmente lo que hace el six
módulo de Benjamin Peterson .
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
puedes hacerlo usando el bucle for
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:
reduce(lambda x,y:x+y,d.values())
sum (d.values ()) - "d" -> Su variable de diccionario
La respuesta de phihag (y otras similares) no funcionará en python3.
Para python 3:
d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))
¡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.
Podría considerar 'for loop' para esto:
d = {'data': 100, 'data2': 200, 'data3': 500}
total = 0
for i in d.values():
total += i
total = 800
sum(d.values())
, ya que .values()
devuelve a List
.
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:
c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}
sum(list(c.values()))
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.