Python 列表重复操作

Python 列表重复操作,python,list,duplicates,Python,List,Duplicates,我对python非常陌生,现在我真的迷路了。如果有人能帮助我,我将非常感激。 我有一份清单: list1 = [((a, b), 2), ((a, b), 5), ((c, d), 1)), ((e, f), 2), ((e, f), 4)] 我想要的输出是: output = [((a, b), 7), ((c, d), 1), ((e, f), 6)] 我试着把它放进字典里 new_dict = {i: j for i, j in list1} 但这给我带来了一个错误 也许还有其他方法

我对python非常陌生,现在我真的迷路了。如果有人能帮助我,我将非常感激。 我有一份清单:

list1 = [((a, b), 2), ((a, b), 5), ((c, d), 1)), ((e, f), 2), ((e, f), 4)]
我想要的输出是:

output = [((a, b), 7), ((c, d), 1), ((e, f), 6)]
我试着把它放进字典里

new_dict = {i: j for i, j in list1}
但这给我带来了一个错误


也许还有其他方法?

在代码注释中找到解释

list1=[(('a','b'),2),('a','b'),5),('c','d'),1),('e','f'),2),('e','f'),4)]
#让我们创建一个空字典
输出={}
#('a','b')是一个元组,元组是可散列的,因此我们可以将其用作字典键
#迭代列表1
对于清单1中的i:
#对于每个项目,检查输出中是否存在i[0]
如果输出中有i[0]:
#如果是,只需添加i[1]
输出[i[0]]+=i[1]
其他:
#创建新密钥
输出[i[0]]=i[1]
#最后打印字典
最终输出=列表(output.items())
打印(最终输出)

您可以按以下方式使用
{}.get

list1 = [(('a', 'b'), 2), (('a', 'b'), 5), (('c', 'd'), 1), (('e', 'f'), 2), (('e', 'f'), 4)]

di={}
for t in list1:
    di[t[0]]=di.get(t[0],0)+t[1]

>>> di
{('a', 'b'): 7, ('c', 'd'): 1, ('e', 'f'): 6}
您还可以使用:

然后使用
list
{}.items()
,将它们转换为元组列表(如您所用):

“一个错误”并不是特别有用。请发布完整的错误回溯!
list1 = [(('a', 'b'), 2), (('a', 'b'), 5), (('c', 'd'), 1), (('e', 'f'), 2), (('e', 'f'), 4)]

di={}
for t in list1:
    di[t[0]]=di.get(t[0],0)+t[1]

>>> di
{('a', 'b'): 7, ('c', 'd'): 1, ('e', 'f'): 6}
from collections import Counter 

c=Counter({t[0]:t[1] for t in list1})

>>> c
Counter({('a', 'b'): 5, ('e', 'f'): 4, ('c', 'd'): 1})
>>> list(c.items())
[(('a', 'b'), 5), (('c', 'd'), 1), (('e', 'f'), 4)]
list1 = [(('a', 'b'), 2), (('a', 'b'), 5), (('c', 'd'), 1), (('e', 'f'), 2), (('e', 'f'), 4)]
sorted_dict = {}
for ele in list1:
    if ele[0] in sorted_dict:
        sorted_dict[ele[0]] += ele[1]
    else:
        sorted_dict[ele[0]] = ele[1]
print(sorted_dict)