Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按名称对列表中的数字求和_Python - Fatal编程技术网

Python 如何按名称对列表中的数字求和

Python 如何按名称对列表中的数字求和,python,Python,我有以下列表(已按名称排序): 我想要此输出(具有相对和的唯一名称): 列表列表将被更新…所以不是一个有限的列表列表。可以有三个以上的名称,每个名称可以有两个以上的数字,例如: [['Argo',2],['Argo',9],['Argo',20],['Gim',1],['Gim',7],['Sam',10],['Ted',10],['Ted',10]] 您可以尝试以下方法: from collections import defaultdict d = defaultdict(int) p

我有以下列表(已按名称排序):

我想要此输出(具有相对和的唯一名称):

列表列表将被更新…所以不是一个有限的列表列表。可以有三个以上的名称,每个名称可以有两个以上的数字,例如:

 [['Argo',2],['Argo',9],['Argo',20],['Gim',1],['Gim',7],['Sam',10],['Ted',10],['Ted',10]]
您可以尝试以下方法:

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,您可以在遍历
人员时更新与每个人关联的值。
输出:


您可以创建一个字典来汇总这些值,然后将其写回列表列表(如果您确实需要它作为列表)


你尝试过什么?你是否尝试过写一些东西,以便我们可以查看和调试,或者你只是想让我们为你编写代码?是的,他们正在寻找一种不是求和而是求平均值的方法?[Argo',5.5],[Gim',4],[Sam',10]]
 [['Argo',2],['Argo',9],['Argo',20],['Gim',1],['Gim',7],['Sam',10],['Ted',10],['Ted',10]]
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])
[['Argo', 5.5], ['Gim', 4.0], ['Sam', 10.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]