Python 列表重复操作
我对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} 但这给我带来了一个错误 也许还有其他方法
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)