3

重複の可能性:
Python で文字列のリストをソートするにはどうすればよいですか?
PythonでUnicode文字列をアルファベット順にソートするにはどうすればよいですか?

文字列のリストがあり、listアルファベット順に並べ替えたいと考えています。リストlist.sort()の最初の部分にはアルファベット順にソートされた大文字で始まるエントリが含まれ、2 番目の部分には小文字で始まるソートされたエントリが含まれます。そのようです:

Airplane
Boat
Car
Dog
apple
bicycle
cow
doctor

私は答えを探しましたが、動作するアルゴリズムには至りませんでした。localeモジュールとパラメータsortについて読みました. 多くの場合、これが と連続していたため、物事がよく理解できませんでした。cmpkeylambdasort

どうすれば入手できますか:

list = ['Dog', 'bicycle', 'cow', 'doctor', 'Car', 'Boat', 'apple', 'Airplane']

に:

Airplane
apple
bicycle
Boat
Car
cow
doctor
Dog

外国語の文字 (ä、é、î など) を考慮する必要があります。

4

2 に答える 2

10

大文字と小文字を区別しない比較を使用します。

>>> sorted(['Dog', 'bicycle', 'cow', 'doctor', 'Car', 'Boat',
        'apple', 'Airplane'], key=str.lower)
['Airplane', 'apple', 'bicycle', 'Boat', 'Car', 'cow', 'doctor', 'Dog']

これは実際には、並べ替えに関する python wikiで提案されている方法です。

Python 2.4 から、 list.sort() と sorted() の両方に、比較を行う前に各リスト要素で呼び出される関数を指定するキー パラメーターが追加されました。

たとえば、大文字と小文字を区別しない文字列比較は次のとおりです。

>>> sorted("This is a test string from Andrew".split(), key=str.lower)
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
于 2012-07-23T20:36:08.427 に答える
4

ここにそのトピックの良い概要があるようです: http ://wiki.python.org/moin/HowTo/Sorting/

ここまでページを下にスクロールします。

たとえば、大文字と小文字を区別しない文字列の比較を次に示します。

>>> sorted("This is a test string from Andrew".split(), key=str.lower)
于 2012-07-23T20:39:03.860 に答える