Допустим, у меня есть словарь, в котором ключи отображаются на целые числа, такие как:
d = {'key1': 1,'key2': 14,'key3': 47}
Есть ли синтаксически минималистичный способ вернуть сумму значений в d
-ie 62
в этом случае?
python
dictionary
hash
sum
nedblorf
источник
источник
sum
себя в терминахreduce
-reduce
это более общая форма (напримерsum
,min
иmax
все можно написать в терминахreduce
) и может легко решить другие проблемы (напримерproduct
).Ответы:
Как и следовало ожидать:
источник
Python 2.7.12
также хорошо работает сsum(d.values())
d.values()
.В Python 2 вы можете избежать создания временной копии всех значений, используя
itervalues()
метод словаря, который возвращает итератор ключей словаря:В Python 3 вы можете просто использовать,
d.values()
потому что этот метод был изменен, чтобы сделать это (иitervalues()
был удален, так как он больше не нужен).Чтобы упростить написание независимого от версии кода, который всегда перебирает значения ключей словаря, может быть полезна служебная функция:
По сути, это то, что
six
делает модуль Бенджамина Петерсона .источник
Конечно, есть. Вот способ суммировать значения словаря.
источник
Вы можете сделать это с помощью цикла for
источник
Я считаю,
sum(d.values())
что это самый эффективный способ получить сумму.Вы также можете попробовать функцию Reduce для вычисления суммы вместе с лямбда-выражением:
источник
sum (d.values ()) - "d" -> Ваш словарь Переменная
источник
Ответ phihag (и аналогичные) не будет работать в python3.
Для питона 3:
Обновить! Есть жалобы, что это не работает! Я просто прикрепляю скриншот из моего терминала. Может быть некоторое несоответствие в версиях и т. Д.
источник
Вы можете рассмотреть 'для цикла' для этого:
всего = 800
источник
sum(d.values())
, так как.values()
возвращаетList
.Вы можете получить генератор всех значений в словаре, затем преобразовать его в список и использовать функцию sum (), чтобы получить сумму всех значений.
Пример:
источник