Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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_Python 3.x_Tuples - Fatal编程技术网

Python 对列表中每个元组的第一个值求和

Python 对列表中每个元组的第一个值求和,python,python-3.x,tuples,Python,Python 3.x,Tuples,我想在元组中添加具有相同第二个值的第一个值。我已经写了代码,但是我找不到我的错误。 任何想法???\uuuuu setitem\uuuuuuu都不返回,而且您的逻辑也错误。您需要根据第二个值对项目进行分类,然后将第一个值相加 您可以使用collections.defaultdict()进行分类: x = [(5,3), (8, 3), (7, 3), (5, 4), (2, 4), (3, 4)] d = {} [d.__setitem__(d.get(key1,0)+key1,key2) fo

我想在元组中添加具有相同第二个值的第一个值。我已经写了代码,但是我找不到我的错误。
任何想法???

\uuuuu setitem\uuuuuuu
都不返回,而且您的逻辑也错误。您需要根据第二个值对项目进行分类,然后将第一个值相加

您可以使用
collections.defaultdict()
进行分类:

x = [(5,3), (8, 3), (7, 3), (5, 4), (2, 4), (3, 4)]
d = {}
[d.__setitem__(d.get(key1,0)+key1,key2) for key1,key2 in x]
print(list(d.items()))

请注意,如果列表未根据第二项进行排序,则在传递到
groupby()
函数之前,需要根据第二项对其进行排序。(在这种情况下,此解决方案与
defaultdict
one相比会非常低效)

\uuuuuuu setitem\uuuuuuu
返回无,而且您的逻辑也错误。您需要根据第二个值对项目进行分类,然后将第一个值相加

您可以使用
collections.defaultdict()
进行分类:

x = [(5,3), (8, 3), (7, 3), (5, 4), (2, 4), (3, 4)]
d = {}
[d.__setitem__(d.get(key1,0)+key1,key2) for key1,key2 in x]
print(list(d.items()))

请注意,如果列表未根据第二项进行排序,则在传递到
groupby()
函数之前,需要根据第二项对其进行排序。(在这种情况下,与
defaultdict
one相比,此解决方案效率非常低)

Kasramvd已经向您介绍了您的方法不起作用的原因。您可以使用按第二个元组元素分组,然后将第一个元素和

显然,如果列表没有按第二个元组元素排序,那么必须先排序

演示

{k: sum(map(itemgetter(0), g)) for k, g in groupby(x, itemgetter(1))}

Kasramvd已经向您介绍了为什么您的方法不起作用。您可以使用按第二个元组元素分组,然后将第一个元素和

显然,如果列表没有按第二个元组元素排序,那么必须先排序

演示

{k: sum(map(itemgetter(0), g)) for k, g in groupby(x, itemgetter(1))}

我不明白您想做什么,也不确定您的解释是否比代码或其他方面更令人困惑:)请详细说明并添加您想要实现的示例在列表中使用
\uuuuuuuu setitem\uuuuuu
理解应该尖叫“这是错误的方法”请提供预期的输出,以便问题更清楚。我不明白您想做什么,也不确定您的解释是否比代码或其他方式更令人困惑:)请详细说明并添加您想要实现的示例在列表中使用
\uuuuuu setitem\uuuuu
,理解应该尖叫“这是错误的方法”请提供预期结果,以便问题更清楚。
>>> from operator import itemgetter
>>> from itertools import groupby
>>> x = [(5,3), (8, 3), (7, 3), (5, 4), (2, 4), (3, 4)]
>>> {k: sum(map(itemgetter(0), g)) for k, g in groupby(x, itemgetter(1))}
{3: 20, 4: 10}