从列表中打印相同值的总和

时间:2018-12-20 18:58:59

标签: python python-3.x

我正在使用for循环浏览列表,例如:

for c in classes:
    print(c.get(‘class’), c.get(‘money’,{})[0].get(‘totalspent’))

我得到结果:

classs1  10
class2   20
class3   10
class2   30
class3   20 

我正在设法找到一种获得类似东西的方法:

class1  10
class2  50
class3  30

我该怎么做?我尝试制作字典并将所有内容放入for循环下,但始终会出错。

1 个答案:

答案 0 :(得分:3)

使用defaultdict

from collections import defaultdict

output = defaultdict(int)

for c in classes:
    output[c.get('class')] += c.get('money', {})[0].get('totalspent', 0)
#                                                                    ^ Note the 0 as default

print(output)

output将是一个字典,其中的键是类的名称,值是总数。