削除方法は、複からPythonのリストを保持することにあります。[重複]

StackOverflow https://stackoverflow.com/questions/479897

  •  20-08-2019
  •  | 
  •  

質問

される文字列のリストしたいソートでアルファベット順、およびremove重複している。思いることができ:

from sets import Set
[...]
myHash = Set(myList)

もしっかり身につけるたノウハウ取得のリストのメンバーからのハッシュはアルファベット順です。

んと結婚のハッシュ、そのこします。また、性能というわけではありませんが、問題ない。ソリューションコードで表現を明確に非効率なパフォーマンが不透明です。

役に立ちましたか?

解決

一覧を並べ替えができ、deduplicatedを組み込み関数:

myList = sorted(set(myList))
  • set は組み込み関数のPython>=2.3
  • sorted は組み込み関数のPython>=2.4

他のヒント

あなたの入力はすでにソートされている場合は、それを行うための簡単な方法があるかもしれません。

from operator import itemgetter
from itertools import groupby
unique_list = list(map(itemgetter(0), groupby(yourList)))

あなただけの値としてNoneでOrderedDict使用し、元のリストの順序を保持する場合。

Python2でます:

    from collections import OrderedDict
    from itertools import izip, repeat

    unique_list = list(OrderedDict(izip(my_list, repeat(None))))

のpython3ではそれも簡単です:

    from collections import OrderedDict
    from itertools import repeat

    unique_list = list(OrderedDict(zip(my_list, repeat(None))))

あなたはイテレータ(ジップやリピート)好きではない場合は、発電機を(2&3の両方で動作します)を使用することができます

    from collections import OrderedDict
    unique_list = list(OrderedDict((element, None) for element in my_list))
それはあなたが後にしている明瞭さ、というよりも高速だ場合は、

、私はこれは非常に明確だと思います:

def sortAndUniq(input):
  output = []
  for x in input:
    if x not in output:
      output.append(x)
  output.sort()
  return output

は、入力リストの各要素のNOT INを繰り返し使用して、しかしはO(n ^ 2)です。

>しかし、私はアルファベット順にハッシュからリストメンバーを取得する方法がわからない。

そうでもないあなたの主な質問が、今後の参考のためにsortedを使用してロッドの答えは、ソート順にdictの鍵を横断するために使用することができます:

for key in sorted(my_dict.keys()):
   print key, my_dict[key]
   ...

tupleのタプルの最初のメンバーが発注されているが、あなたと同じことを行うことができますので、また、items

for key, val in sorted(my_dict.items()):
    print key, val
    ...

文字列データの場合

 output = []

     def uniq(input):
         if input not in output:
            output.append(input)
 print output     
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top