文字列のリストが与えられたら、アルファベット順に並べ替えて重複を削除します。私はこれができることを知っています:
from sets import Set
[...]
myHash = Set(myList)
ハッシュからアルファベット順にリストメンバーを取得する方法がわかりません。
私はハッシュと結婚していないので、これを達成する方法はすべて機能します。また、パフォーマンスは問題ではないので、高速でより不透明なものよりも、コードで明確に表現されたソリューションを好むでしょう。
入力が既にソートされている場合は、より簡単な方法があります。
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))))
イテレータ(Zipと繰り返し)が気に入らない場合は、ジェネレータを使用できます(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
ただし、O(n ^ 2)であり、入力リストの各要素に対してnot inを繰り返し使用しています。
>アルファベット順でハッシュからリストメンバーを取得する方法がわかりません。
本当にあなたの主な質問ではありませんが、今後の参照のために、sorted
を使用したRodの答えは、ソートされた順序でdict
のキーを走査するために使用できます。
for key in sorted(my_dict.keys()):
print key, my_dict[key]
...
また、Tuple
は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