4

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

私がやろうとしているのは、リストを引数として取り、セットを使用して各要素が一度だけ発生するリストのコピーを返すメソッドを作成し、新しいリストの要素をその順序で発生させることです。元のリストの最初の出現。これにはセットを使用する必要がありますが、迅速な結果を得ながら出力が正しい順序になるようにすることはできません。私がこのようなものを置くと:

def unique(a):

return list(set(a))

何百万もの要素を含むリストを渡すと、すぐに結果が得られますが、順序付けされません。だから私が今持っているのはこれです:

def unique(a):
b = set(a)
c = {}
d = []
for i in b:
    c[a.index(i)] = i
for i in c:
    d.append(c[i])
return d

これにより、必要な結果が得られますが、十分に高速ではありません。100 万個の要素を含むリストを渡すと、30 分間待機する可能性がありますが、そこにある 1 つのライナーには 1 秒もかかりません。どうすればこの問題を解決できますか?

4

1 に答える 1

8
>>> from collections import OrderedDict
>>> items = [1, 2, 3, 'a', 2, 4, 'a']
>>> OrderedDict.fromkeys(items).keys()
[1, 2, 3, 'a', 4]
于 2012-10-14T02:35:31.503 に答える