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
使用元组中某些成员的等价性聚合元组列表(通过python)_Python - Fatal编程技术网

使用元组中某些成员的等价性聚合元组列表(通过python)

使用元组中某些成员的等价性聚合元组列表(通过python),python,Python,我有一个元组列表,例如: [(a, 0), (a, 2), (a, 1), (a, 1), (a, 1), (a, 1), (a, 0), (b, 0), (a, 0), (b, 0), (b, 0), (b, 0), (b, 0), (b, 0), (b, 4)] 我想把元组的所有第二个元素加在一起,其中第一个元素是相同的。即,上述清单将变为: [(a,0+2+1+1+1+1+0+0),(b,0+0+0+0+0+0+4)] = [(a,6),(b,4)] 在python中实现这一点的最快方

我有一个元组列表,例如:

[(a, 0), (a, 2), (a, 1), (a, 1), (a, 1), (a, 1), (a, 0), (b, 0), (a, 0), (b, 0), (b, 0), (b, 0), (b, 0), (b, 0), (b, 4)]
我想把元组的所有第二个元素加在一起,其中第一个元素是相同的。即,上述清单将变为:

[(a,0+2+1+1+1+1+0+0),(b,0+0+0+0+0+0+4)] = [(a,6),(b,4)]

在python中实现这一点的最快方法是什么?

使用
itertools.groupby(iterable,key=None)
sum(iterable[,start])
函数的解决方案:

l = [('a', 0), ('a', 2), ('a', 1), ('a', 1), ('a', 1), ('a', 1), ('a', 0), ('b', 0), ('a', 0), ('b', 0), ('b', 0), ('b', 0), ('b', 0), ('b', 0), ('b', 4)]
result = [(k,sum(i[1] for i in list(v))) for k,v in itertools.groupby(sorted(l), key=lambda x: x[0])]

print(result)
输出:

[('a', 6), ('b', 4)]

应该是
(a,6)