累积列表中重复项的值
Accumulate values of duplicate items within a list
我正在尝试找出一种方法来从我的列表中删除 "duplicate" 元组,同时还累积它们的 "values"。棘手的部分是它们不一定是真正的重复项,也不是真正的值,那么最好的方法是什么?
尝试将我的列表转换成字典会不会更容易?
我的元组列表:
lst = [('bday', 1), ('ramen', 2), ('cake', 1), ('ramen', 1), ('cake', 2), ('ramen', 1)]
预期输出:
({'cake': 3, 'birthday': 1, 'ramen': 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})
有一种算法可以应对这种情况。就叫counting sort!在这种情况下,我们将有一个字典,其中的键是您要计算的内容,出现次数将是值。
我正在尝试找出一种方法来从我的列表中删除 "duplicate" 元组,同时还累积它们的 "values"。棘手的部分是它们不一定是真正的重复项,也不是真正的值,那么最好的方法是什么?
尝试将我的列表转换成字典会不会更容易?
我的元组列表:
lst = [('bday', 1), ('ramen', 2), ('cake', 1), ('ramen', 1), ('cake', 2), ('ramen', 1)]
预期输出:
({'cake': 3, 'birthday': 1, 'ramen': 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})
有一种算法可以应对这种情况。就叫counting sort!在这种情况下,我们将有一个字典,其中的键是您要计算的内容,出现次数将是值。