Скажімо, у мене є словник, в якому ключі відображаються на цілі числа:
d = {'key1': 1,'key2': 14,'key3': 47}
Чи є синтаксичний мінімалістичний спосіб повернути суму значень в d-ie 62в цьому випадку?
Скажімо, у мене є словник, в якому ключі відображаються на цілі числа:
d = {'key1': 1,'key2': 14,'key3': 47}
Чи є синтаксичний мінімалістичний спосіб повернути суму значень в d-ie 62в цьому випадку?
Відповіді:
Як ви і очікували:
sum(d.values())
Python 2.7.12також добре працює зsum(d.values())
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))
Це по суті те, що sixробить модуль Бенджаміна Петерсона .
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
ви можете зробити це за допомогою циклу for
Я вважаю, що sum(d.values())це найефективніший спосіб отримати суму.
Ви також можете спробувати функцію зменшення, щоб обчислити суму разом з лямбда-виразом:
reduce(lambda x,y:x+y,d.values())
sum (d.values ()) - "d" -> Ваша змінна словник
Відповідь фігага (і подібні) не буде працювати в python3.
Для пітона 3:
d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))
Оновлення! Є скарги, що це не працює! Я просто додаю скріншот зі свого терміналу. Може бути якась невідповідність у версіях тощо.
Ви можете розглянути "для циклу" для цього:
d = {'data': 100, 'data2': 200, 'data3': 500}
total = 0
for i in d.values():
total += i
всього = 800
sum(d.values()), оскільки .values()повертає a List.
Ви можете отримати генератор усіх значень у словнику, а потім віддати його до списку та скористатися функцією sum (), щоб отримати суму всіх значень.
Приклад:
c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}
sum(list(c.values()))
sumсебе з точки зоруreduce-reduceце більш загальна форма (наприкладsum,minіmaxвсе можна записати в термінахreduce) і може легко вирішити інші проблеми (наприкладproduct).