私は、順序付けされた一意の値だけを保持するためにpython(2.7)リストをフィルタリングする必要がある多くのタスクに遭遇します。私の通常のアプローチは、コレクションからodereddict
を使用することである:Pythonリストを順序付けられた一意の値に変換する
from collections import OrderedDict
ls = [1,2,3,4,1,23,4,12,3,41]
ls = OrderedDict(zip(ls,['']*len(ls))).keys()
print ls
出力である:
[1、2、3、4、23、12、41]
がありますPythonでそれを行うアートメソッドの他の状態は?
- 注 - 入力と出力が
list
として与えられるべきで編集 - メソッドの比較はここで見つけることができます: https://www.peterbe.com/plog/uniqifiers-benchmark
最善の解決策が一方です。
def get_unique(seq):
seen = set()
seen_add = seen.add
return [x for x in seq if not (x in seen or seen_add(x))]
この情報はお役に立ちますか? htt38://wiki.python.org/moin/HowTo/Sorting – Jaxi
いいえ、私は '' sort''オプションを探していません – Dimgold
私は答えを投稿しようとしていましたが、このスレッドはロックされています。 'O(1)'のどちらかの要素から要素にアクセスします。 –