如何在Python中对具有相同名称的元组的值求和

我有以下列表,其中包含必须具有值的元组:

mylist=[(3, 'a'), (2, 'b'), (4, 'a'), (5, 'c'), (2, 'a'), (1, 'b')]

有没有一种方法可以对所有共享相同名称的值求和?就像是:

(9, 'a'), (3, 'b'), (5, 'c')

我尝试使用for循环迭代元组,但无法获得我想要的。

谢谢

回答:

您可以使用itertools.groupby(按每个元组的第二个值排序之后)创建组。然后,对于每个组,对每个元组中的第一个元素求和,然后在列表推导中为每个组创建一个元组。

>>> import itertools

>>> [(sum(i[0] for i in group), key) for key, group in itertools.groupby(sorted(mylist, key = lambda i: i[1]), lambda i: i[1])]

[(9, 'a'), (3, 'b'), (5, 'c')]

以上是 如何在Python中对具有相同名称的元组的值求和 的全部内容, 来源链接: utcz.com/qa/415977.html

回到顶部