Mat*_*łło 52 python dictionary list
我有一个非常简单的列表:
example_list = [
{'points': 400, 'gold': 2480},
{'points': 100, 'gold': 610},
{'points': 100, 'gold': 620},
{'points': 100, 'gold': 620}
]
Run Code Online (Sandbox Code Playgroud)
我如何总结所有黄金价值?我正在寻找漂亮的oneliner.
现在我正在使用此代码(但它不是最佳解决方案):
total_gold = 0
for item in example_list:
total_gold += example_list["gold"]
Run Code Online (Sandbox Code Playgroud)
Ben*_*rns 11
如果你有记忆意识:
sum(item['gold'] for item in example_list)
Run Code Online (Sandbox Code Playgroud)
如果你非常注意时间:
sum([item['gold'] for item in example_list])
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,只使用生成器表达式,因为性能提升仅在非常大的数据集/非常热的代码路径上才会显着.
请参阅此答案,了解为何应避免使用地图.
请参阅此答案,了解列表理解与生成器表达式的实际时序比较.
如果您愿意map,这也适用:
import operator
total_gold = sum(map(operator.itemgetter('gold'),example_list))
Run Code Online (Sandbox Code Playgroud)
但我认为 gddc 发布的生成器要好得多。这个答案真的只是为了指出operator.itemgetter.
from collections import Counter
from functools import reduce
from operator import add
sum_dict = reduce(add, (map(Counter, example_list)))
# Counter({'points': 700, 'gold': 4330})
total_gold = sum_dict['gold']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51972 次 |
| 最近记录: |