2016-09-28 3 views
2

Pythonでは、set(list)を使用してリストの一意の項目を取得できます。ただし、これを行うと、値が元のリストに表示される順序が崩れます。ユニークなアイテムをリストに表示される順序で取得するには、エレガントな方法がありますか?Python:リストの一意の項目が表示される順に表示されます

+0

'numpy'が動作する場合、いくつかの質問があります(http://stackoverflow.com/questions/12926898/numpy-unique-without-sort)。それ以外の場合、「安定したユニーク」がキーワードとなります。 –

+0

@AndrasDeakありがとうございました。はい、現時点では整数型のデータ型しか持っていません。 – WanderingMind

+0

言うまでもなく、それを 'list'と呼んではいけません;) –

答えて

5

これは、エレガントな方法です。

ハッシュ可能でない項目がある場合は、パフォーマンスが悪いほど堅牢な代替品があります。Patrick Haughのanswerを参照してください。

+0

ハッシュ可能でない更新は既に以前の回答に存在するので、この回答では少し重複しています。 –

+1

OK、私は単に他の答えを参照するように編集しました。 – wim

1
l = [] 
for item in list_: 
    if item not in l: 
     l.append(item) 

これは実際に大きく、多様なために遅くなりますlist_。そのような場合には、見える値のセットを追跡することも価値があります。リストの項目は、すべてのハッシュ可能であればそれは(セットに変換すると、例外が発生しなかった場合は、すべてのリスト項目はハッシュ可能であることを知っているだろう)作品

from collections import OrderedDict 
list(OrderedDict.fromkeys(list)) 

関連する問題