Как суммировать все значения в словаре?

Скажем, у меня есть словарь, в котором ключи сопоставляются с целыми числами:

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

Есть ли синтаксически минималистический способ вернуть сумму значений в d -i.e. 62 в этом случае?

Ответ 1

Как и следовало ожидать:

sum(d.values())

Ответ 2

В Python 2 вы можете избежать временной копии всех значений с помощью метода словаря itervalues(), который возвращает итератор ключей словаря:

sum(d.itervalues())

В Python 3 вы можете просто использовать d.values(), потому что этот метод был изменен для этого (и itervalues() был удален, поскольку он больше не нужен).

Чтобы упростить запись независимого от версии кода, который всегда выполняет итерации по значениям ключей словаря, полезная функция может быть полезна:

import sys

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

sum(itervalues(d))

Это по существу то, что делает модуль Benjamin Peterson six.

Ответ 3

Конечно, есть. Ниже приведен способ суммирования значений словаря.

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

Ответ 4

d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)

вы можете сделать это с помощью цикла for

Ответ 5

Я считаю, что sum(d.values()) - самый эффективный способ получить сумму.

Вы также можете попробовать функцию Reduce для вычисления суммы вместе с лямбда-выражением:

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

Ответ 6

sum (d.values()) - "d" → Ваш словарь Переменная