Ответ 1
Как и следовало ожидать:
sum(d.values())
Скажем, у меня есть словарь, в котором ключи сопоставляются с целыми числами:
d = {'key1': 1,'key2': 14,'key3': 47}
Есть ли синтаксически минималистический способ вернуть сумму значений в d
-i.e. 62
в этом случае?
Как и следовало ожидать:
sum(d.values())
В 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
.
Конечно, есть. Ниже приведен способ суммирования значений словаря.
>>> d = {'key1':1,'key2':14,'key3':47}
>>> sum(d.values())
62
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
вы можете сделать это с помощью цикла for
Я считаю, что sum(d.values())
- самый эффективный способ получить сумму.
Вы также можете попробовать функцию Reduce для вычисления суммы вместе с лямбда-выражением:
reduce(lambda x,y:x+y,d.values())
sum (d.values()) - "d" → Ваш словарь Переменная