Python - 字典中的和值

时间:2012-07-27 17:21:44

标签: python list dictionary

我有一个非常简单的清单:

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"]

3 个答案:

答案 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的存在。