3

重複の可能性:
順序を維持しながら Python のリストから重複を削除するにはどうすればよいですか?
Pythonには順序付きセットがありますか?

私は次のことをかなり頻繁に行っていることに気づきました。

list_of_items # I have a list of items
set(list_of_items) # I want to remove duplicates

ただし、 に変換するとset、リスト内の最初の順序が失われます。これは重要です。

リスト内の重複を削除し、リストの最初の (相対的な) 順序を維持する最良の方法は何ですか?

4

3 に答える 3

7

これはリスト内包表記の乱用ですが、次のようになります。

seen = set()
item_list = [seen.add(item) or item for item in item_list if item not in seen]
于 2012-06-15T23:29:34.340 に答える
0

辞書を使用して重複を削除し、データをキーとして使用し、値として何かを使用します。辞書にある場合は、再度追加しないでください。

d = dict()
for i in range(0, len(list_of_items)):
    if(list_of_items[i] not in d):
        d[list_of_items[i]] = i
        list_of_items2.append(list_of_items[i])
于 2012-06-15T23:35:49.450 に答える
0

少しハックですが...

item_list = [x[1] for x in sorted(x[::-1] for x in dict(zip(item_list[::-1],range(len(item_list)))).items())][::-1]
于 2012-06-15T23:50:35.167 に答える