Скажімо, у мене є словник, в якому ключі відображаються на цілі числа:
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
).