私は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
は人間が読めるテキストを含むすべての文字列の正しいデータ型です。しかし、それでもPython 2を使用する必要がある場合は、Python 2ではunicode
ではなくstr
のデータ型を持つUnicode文字列を扱うことがあります。そのような場合、Unicode文字列のリストがあるなら、key=unicode.lower
の代わりにkey=str.lower
を書く必要があります。
Pythonは sorted
と呼ばれる組み込み関数を持っています。これはあなたがそれをフィードした任意のイテラブルからソートされたリストを与えます(list([1,2,3]
)のように)。 dict({1:2,3:4}
、ただしソートされたキーのリストが返されるだけで、set({1,2,3,4
)、またはTuple((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
引数を取ります。これは、ソート対象を変更するために使用できる呼び出し可能(function/lambda)でなければなりません。
たとえば、値でソートされた辞書から(key,value)
-のペアのリストを取得するには、次のコードを使用できます。
>>> 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)]
組み込みのsorted
関数を使うことができます。
print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])
あなたはpythonリストを扱っています、そしてそれをソートすることはこれをするのと同じくらい簡単です。
my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()
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']
>>>