202

Pythonのデータ構造に関して少し混乱しています。()、、、[]および{}。単純なリストを並べ替えようとしています。おそらく、並べ替えに失敗したデータの種類を識別できないためです。

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

私の質問は、これがどのタイプのデータであり、単語をアルファベット順にソートする方法ですか?

4

6 に答える 6

299

[]リストを示し()タプル{}示し、辞書を示します。これらは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

于 2012-12-25T17:10:51.413 に答える
37

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)]
于 2012-12-25T17:21:18.280 に答える
13

あなたはPythonリストを扱っており、それをソートするのはこれを行うのと同じくらい簡単です。

my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()
于 2012-12-25T17:10:00.300 に答える
11

内蔵sorted機能を使用できます。

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])
于 2012-12-25T17:10:39.663 に答える
5

ListName.sort()アルファベット順に並べ替えます。reverse=False/True角かっこを追加して、アイテムの順序を逆にすることができます。ListName.sort(reverse=False)

于 2014-10-09T09:10:11.533 に答える
3
>>> 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']
>>> 
于 2012-12-25T17:11:22.150 に答える