Python 删除字符串列表中每个项中的重复项
我有一个包含以下值的列表Python 删除字符串列表中每个项中的重复项,python,string,list,Python,String,List,我有一个包含以下值的列表 list1= ['AAB', 'CAA', 'ADA'] 如何删除列表中每个项目中的重复项,以便获得以下输出 list1= ['AB', 'CA', 'AD'] 此处应保留字母顺序如果您不希望保留字母顺序,可以使用set结合列表理解: list1= ['AAB', 'CAA', 'ADA'] list1 = [''.join(set(l)) for l in list1] print(list1) from collections import OrderedDi
list1= ['AAB', 'CAA', 'ADA']
如何删除列表中每个项目中的重复项,以便获得以下输出
list1= ['AB', 'CA', 'AD']
此处应保留字母顺序如果您不希望保留字母顺序,可以使用
set
结合列表理解:
list1= ['AAB', 'CAA', 'ADA']
list1 = [''.join(set(l)) for l in list1]
print(list1)
from collections import OrderedDict
list1= ['AAB', 'CAA', 'ADA']
list1 = [''.join(OrderedDict.fromkeys(l).keys()) for l in list1]
print(list1)
或者,如果希望保留顺序,请使用:
list1= ['AAB', 'CAA', 'ADA']
list1 = [''.join(set(l)) for l in list1]
print(list1)
from collections import OrderedDict
list1= ['AAB', 'CAA', 'ADA']
list1 = [''.join(OrderedDict.fromkeys(l).keys()) for l in list1]
print(list1)
在列表上循环,强制转换为set,join
new_list = []
for word in list1:
new_list.append(''.join(set(word)))
您可以使用字符串上的字符作为键来创建dict,以消除重复
list1= ['AAB', 'CAA', 'ADA']
list1 = [''.join(dict.fromkeys(l).keys()) for l in list1]
print(list1)
有趣的正则表达式解决方案:
>>> import re
>>> [re.sub(r'(.)(?=.*\1)', '', s[::-1])[::-1] for s in list1]
['AB', 'CA', 'AD']
如果您同意保留每一项的最后一次出现,则可以省略反转:
>>> [re.sub(r'(.)(?=.*\1)', '', s) for s in list1]
['AB', 'CA', 'DA']
适当的解决办法是:
>>> [''.join(dict.fromkeys(s)) for s in list1]
['AB', 'CA', 'AD']
(不确定其他人为什么使用
.keys()
,这会不必要地花费额外的代码、时间和空间。)你能回答这个问题吗,说明你尝试了什么,但没有成功?这能回答你的问题吗?