累计列表中重复项的值

时间:2015-03-05 03:22:12

标签: python list dictionary tuples accumulate

我正在试图找出一种方法来从我的列表中删除“重复”元组,同时还积累它们的“值”。棘手的部分是它们不是真正的重复,也不是真正的价值,所以最好的方法是什么?

尝试将列表转换为字典会更容易吗?

我的元组列表:

lst = [('bday', 1), ('ramen', 2), ('cake', 1), ('ramen', 1), ('cake', 2), ('ramen', 1)]

预期输出:

 ({'cake': 3, 'birthday': 1, 'ramen': 4})

2 个答案:

答案 0 :(得分:4)

您可以使用defaultdict

from collections import defaultdict

mylist = [('birthday', 1), ('ramen', 2), ('cake', 1), ('ramen', 1), ('cake', 2), ('ramen', 1)]

d = defaultdict(int)

for k,v in mylist:
    d[k] += v        

print(d)    
# defaultdict(<type 'int'>, {'cake': 3, 'birthday': 1, 'ramen': 4})

答案 1 :(得分:0)

这种场合有一种算法。它被称为counting sort!在这种情况下,我们会有一个字典,其中键是您想要计算的,并且出现的数量将是值。