Python - sum values in dictionary
I have got pretty simple list:
example_list = [
{'points': 400, 'gold': 2480},
{'points': 100, 'gold': 610},
{'points': 100, 'gold': 620},
{'points': 100, 'gold': 620}
]
How can I sum all gold values? I'm looking for nice oneliner.
Now I'm using this code (but it's not the best solution):
total_gold = 0
for item in example_list:
total_gold += example_list["gold"]
Solution 1:
sum(item['gold'] for item in myList)
Solution 2:
If you're memory conscious:
sum(item['gold'] for item in example_list)
If you're extremely time conscious:
sum([item['gold'] for item in example_list])
In most cases just use the generator expression, as the performance increase is only noticeable on a very large dataset/very hot code path.
See this answer for an explanation of why you should avoid using map.
See this answer for some real-world timing comparisons of list comprehension vs generator expressions.
Solution 3:
If you prefer map
, this works too:
import operator
total_gold = sum(map(operator.itemgetter('gold'),example_list))
But I think the generator posted by g.d.d.c is significantly better. This answer is really just to point out the existence of operator.itemgetter
.