Python 对元组列表的重复元素求和

Python 对元组列表的重复元素求和,python,python-3.x,list,tuples,Python,Python 3.x,List,Tuples,假设我有一个元组列表,比如 [('a', 1), ('a', 1), ('a', 1), ('b', 2), ('e', 3), ('e', 3), ('g', 4), ('b', 1)] [('a', 3), ('b', 3), ('e', 6), ('g', 4)] 我怎样才能得到这样的元组列表 [('a', 1), ('a', 1), ('a', 1), ('b', 2), ('e', 3), ('e', 3), ('g', 4), ('b', 1)] [('a', 3), ('b'

假设我有一个元组列表,比如

[('a', 1), ('a', 1), ('a', 1), ('b', 2), ('e', 3), ('e', 3), ('g', 4), ('b', 1)]
[('a', 3), ('b', 3), ('e', 6), ('g', 4)]
我怎样才能得到这样的元组列表

[('a', 1), ('a', 1), ('a', 1), ('b', 2), ('e', 3), ('e', 3), ('g', 4), ('b', 1)]
[('a', 3), ('b', 3), ('e', 6), ('g', 4)]

重复元素的值在逗号之后求和,此求和值放在新元组列表中现在唯一的元素之后。

您可以使用字典和
dict.get(letter,0)
对每个字母的值求和,然后将
dict
作为元组列表输出

data = [('a', 1), ('a', 1), ('a', 1), ('b', 2), ('e', 3), ('e', 3), ('g', 4), ('b', 1)]

def combine(data):
    output = {}
    for letter, number in data:
        output[letter] = output.get(letter, 0) + number
    return list(output.items())

print(combine(data))
#[('a', 3), ('b', 3), ('e', 6), ('g', 4)]