我有这个列表清单(已按名称排序):
[['Argo',2],['Argo',9],['Gim',1],['Gim',7],['Sam',10]]
我想要这个输出(具有相对总和的唯一名称):
[['Argo',11],['Gim',8],['Sam',10]]
列表列表将更新...因此不是列表的有限列表。可以有三个以上的名称,每个名称可以有两个以上的数字,例如:
[['Argo',2],['Argo',9],['Argo',20],['Gim',1],['Gim',7],['Sam',10],['Ted',10],['Ted',10]]
答案 0 :(得分:0)
你可以试试这个:
from collections import defaultdict
d = defaultdict(int)
people = [["Argo",2],["Argo",9],["Gim",1],["Gim",7],["Sam",10]]
for i in people:
d[i[0]] += i[1]
for i in d:
the_sum = d[i]
d[i] = the_sum/float([b[0] for b in people].count(i))
new_list = [[a, b] for a, b in d.items()]
new_val = sorted(new_list, key=lambda x: x[0])
通过使用defaultdict,您可以在循环people
时更新与每个人关联的值。
输出:
[['Argo', 5.5], ['Gim', 4.0], ['Sam', 10.0]]
答案 1 :(得分:0)
您可以创建一个字典来对值进行求和并将其写回列表列表(如果您真的需要它作为列表)
name_dict = dict()
for l in your_list:
if l[0] in name_dict:
name_dict[1] += l[1]
else:
name_dict[1] = l[1]