删除列表中的后续重复项[关闭]

问题描述 投票:-1回答:2

我在列表下面。

['AAB', 'CAA', 'ADA', 'CADA', 'AACA']

我想要得到

['AB', 'CA', 'AD', 'CAD', 'AC']

外出的顺序很重要。

python python-3.x list duplicates
2个回答
1
投票

没有OrderedDict并使用set并且还保持输出顺序。

x = ['AAB', 'CAA', 'ADA', 'CADA', 'AACA']
["".join([z.add(c) or c for c in w if c not in z]) for w, z in [(w, set()) for w in x]]

输出:

['AB', 'CA', 'AD', 'CAD', 'AC']

列表理解实际上填充了每个单词的集合,因此复杂性不会增加。


1
投票

似乎输出中的字符顺序对您很重要。你可以像这样使用OrderedDict

from collections import OrderedDict
a = ['AAB', 'CAA', 'ADA', 'CADA', 'AACA']
print(["".join(OrderedDict.fromkeys(i)) for i in a])
# ['AB', 'CA', 'AD', 'CAD', 'AC']
© www.soinside.com 2019 - 2024. All rights reserved.