我有一个名为lista的元组列表,该列表中的值如下所示:
[('A', 1234),('A', 9876),('B',6574),('B',9562), etc]
接下来,我创建defaultdict(list)来存储元组并得到:
([('A', [1234, 9876]),('B',[6547.9562]), etc])
要创建此代码,我写道: //列表
lista = []
for w in data:
if self.getAmountOfProceededInSpecificYear(w.status,w.year,w.district):
lista.append(tuple((w.district,w.amount)))
// dict
passed_dict = defaultdict(list)
for k,v in lista:
passed_dict[k].append(v)
现在,我想对每个键的值求和并得到:
'A', 11110
anobody知道如何总结这些值吗?
答案 0 :(得分:2)
您可以使用defaultdict(int)
代替defaultdict(list)
:
lista = [('A', 1234),('A', 9876),('B',6574),('B',9562)]
passed_dict = defaultdict(int)
for k,v in lista:
passed_dict[k] += v
passed_dict
defaultdict(int, {'A': 11110, 'B': 16136})
答案 1 :(得分:2)
您可以按照建议的here使用itemgetter和groupby
如果您希望将列表作为输出
from itertools import groupby
from operator import itemgetter
lista = [('A', 1234),('A', 9876),('B',6574),('B',9562)]
passed_dict = [(k, sum(list(zip(*v))[1])) for k, v in groupby(lista, itemgetter(0))]
# [('A', 11110), ('B', 16136)]
如果您希望字典作为输出
passed_dict = {k: sum(list(zip(*v))[1]) for k, v in groupby(lista, itemgetter(0))}
# {'A': 11110, 'B': 16136}