我有一个非常简单的清单:
example_list = [
{'points': 400, 'gold': 2480},
{'points': 100, 'gold': 610},
{'points': 100, 'gold': 620},
{'points': 100, 'gold': 620}
]
如何汇总所有 gold 值?我正在寻找漂亮的oneliner。
现在我正在使用此代码(但这不是最佳解决方案):
total_gold = 0
for item in example_list:
total_gold += example_list["gold"]
答案 0 :(得分:119)
sum(item['gold'] for item in myLIst)
答案 1 :(得分:11)
如果你有记忆意识:
sum(item['gold'] for item in example_list)
如果你非常注意时间:
sum([item['gold'] for item in example_list])
在大多数情况下,只使用生成器表达式,因为性能提升仅在非常大的数据集/非常热的代码路径上才会显着。
请参阅this answer,了解您应该避免使用地图的原因。
有关列表理解与生成器表达式的实际时序比较,请参阅this answer。
答案 2 :(得分:3)
如果您更喜欢map
,这也适用:
import operator
total_gold = sum(map(operator.itemgetter('gold'),example_list))
但我认为g.d.d.c发布的生成器明显更好。这个答案实际上只是指出operator.itemgetter
的存在。