web-dev-qa-db-ja.com

Pythonデータ構造ソートリスト(アルファベット順)

私はpythonのデータ構造に関して少し混乱しています。 ()[]、および{}。単純なリストを整理しようとしています。おそらく、ソートに失敗したデータの種類を特定できないためです。

私のリストは簡単です:['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

私の質問は、これがどのような種類のデータなのか、そして単語をアルファベット順に並べる方法は?

133
icypy

[]リスト()タプル 、そして{}辞書 を表します。これらは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を書く必要があります。

195
pemistahl

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'])
9
Fatih Erikli

あなたはpythonリストを扱っています、そしてそれをソートすることはこれをするのと同じくらい簡単です。

my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()
8
Bryan

ListName.sort()はアルファベット順に並べ替えます。括弧内にreverse=False/Trueを追加すると、項目の順序を逆にすることができます。ListName.sort(reverse=False)

4
Crafter0800
>>> 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']
>>> 
3