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()
,这会不必要地花费额外的代码、时间和空间。)

你能回答这个问题吗,说明你尝试了什么,但没有成功?这能回答你的问题吗?