Подтвердить что ты не робот

Python - значения суммы в словаре

У меня есть довольно простой список:

example_list = [
    {'points': 400, 'gold': 2480},
    {'points': 100, 'gold': 610},
    {'points': 100, 'gold': 620},
    {'points': 100, 'gold': 620}
]

Как я могу суммировать все значения золота? Я ищу приятный oneliner.

Теперь я использую этот код (но это не лучшее решение):

total_gold = 0
for item in example_list:
    total_gold += example_list["gold"]
4b9b3361

Ответ 1

sum(item['gold'] for item in myLIst)

Ответ 2

Если вы осознаете память:

sum(item['gold'] for item in example_list)

Если вы очень заняты временем:

sum([item['gold'] for item in example_list])

В большинстве случаев просто используйте выражение генератора, так как увеличение производительности заметно только на очень большом пути к набору данных/очень горячего кода.

См. этот ответ для объяснения причин, по которым вам следует избегать использования карты.

См. этот ответ для некоторых сопоставлений времени в реальном времени по сравнению с генераторными выражениями.

Ответ 3

Если вы предпочитаете map, это тоже работает:

 import operator
 total_gold = sum(map(operator.itemgetter('gold'),example_list))

Но я думаю, что генератор, отправленный g.d.d.c, значительно лучше. Этот ответ на самом деле просто указывает на существование operator.itemgetter.