Pythonのデータ構造に関して少し混乱しています。()
、、、[]
および{}
。単純なリストを並べ替えようとしています。おそらく、並べ替えに失敗したデータの種類を識別できないためです。
私のリストは単純です:['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
私の質問は、これがどのタイプのデータであり、単語をアルファベット順にソートする方法ですか?
Pythonのデータ構造に関して少し混乱しています。()
、、、[]
および{}
。単純なリストを並べ替えようとしています。おそらく、並べ替えに失敗したデータの種類を識別できないためです。
私のリストは単純です:['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
私の質問は、これがどのタイプのデータであり、単語をアルファベット順にソートする方法ですか?
[]
リストを示し()
、タプルを{}
示し、辞書を示します。これらはPythonでのプログラミングの非常に基本的なものであるため、公式のPythonチュートリアルを確認する必要があります。
あなたが持っているのは文字列のリストです。次のように並べ替えることができます。
In [1]: lst = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
In [2]: sorted(lst)
Out[2]: ['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
ご覧のとおり、大文字で始まる単語は小文字で始まる単語よりも優先されます。それらを個別にソートする場合は、次のようにします。
In [4]: sorted(lst, key=str.lower)
Out[4]: ['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']
次のようにして、リストを逆の順序で並べ替えることもできます。
In [12]: sorted(lst, reverse=True)
Out[12]: ['constitute', 'Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux']
In [13]: sorted(lst, key=str.lower, reverse=True)
Out[13]: ['Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux', 'constitute']
注意: Python 3を使用してstr
いる場合は、人間が読めるテキストを含むすべての文字列の正しいデータ型です。unicode
ただし、それでもPython 2を使用する必要がある場合は、Python2ではなくPython2のデータ型を持つUnicode文字列を処理する可能性がありますstr
。このような場合、Unicode文字列のリストがある場合は、のkey=unicode.lower
代わりに書き込む必要がありますkey=str.lower
。
Pythonには、と呼ばれる組み込み関数があります。この関数はsorted
、フィードした反復可能なリストからソートされたリストを提供します(list([1,2,3]
); dict({1:2,3:4}
、ただし、キーのソートされたリストを返すだけです; set({1,2,3,4
)) ;またはタプル((1,2,3,4)
))。
>>> x = [3,2,1]
>>> sorted(x)
[1, 2, 3]
>>> x
[3, 2, 1]
リストには、sort
その場でソートを実行するメソッドもあります(x.sort()はNoneを返しますが、xオブジェクトを変更します)。
>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]
どちらもkey
引数を取ります。これは、並べ替え対象を変更するために使用できる呼び出し可能(関数/ラムダ)である必要があります。
たとえば、(key,value)
値でソートされたdictから-pairsのリストを取得するには、次のコードを使用できます。
>>> x = {3:2,2:1,1:5}
>>> sorted(x.items(), key=lambda kv: kv[1]) # Items returns a list of `(key,value)`-pairs
[(2, 1), (3, 2), (1, 5)]
あなたはPythonリストを扱っており、それをソートするのはこれを行うのと同じくらい簡単です。
my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()
内蔵sorted
機能を使用できます。
print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])
ListName.sort()
アルファベット順に並べ替えます。reverse=False/True
角かっこを追加して、アイテムの順序を逆にすることができます。ListName.sort(reverse=False)
>>> a = ()
>>> type(a)
<type 'tuple'>
>>> a = []
>>> type(a)
<type 'list'>
>>> a = {}
>>> type(a)
<type 'dict'>
>>> a = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
>>> a.sort()
>>> a
['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
>>>