在Python中对字符串列表进行排序

ryn*_*ynd 3 python sorting string

可能重复:
如何在Python中对字符串列表进行排序?
如何在Python中按字母顺序对unicode字符串进行排序?

我有一个字符串列表,list并希望按字母顺序排序.当我调用list.sort()列表的第一部分包含以字母顺序排序的大写字母开头的条目时,第二部分包含以小写字母开头的排序条目.像这样:

Airplane
Boat
Car
Dog
apple
bicycle
cow
doctor
Run Code Online (Sandbox Code Playgroud)

我google了一个答案,但没有找到一个有效的算法.我读到的locale模块和sort参数cmpkey.通常会有这种lambda情况连续发生sort,这让我无法理解.

我怎样才能得到:

list = ['Dog', 'bicycle', 'cow', 'doctor', 'Car', 'Boat', 'apple', 'Airplane']
Run Code Online (Sandbox Code Playgroud)

至:

Airplane
apple
bicycle
Boat
Car
cow
doctor
Dog
Run Code Online (Sandbox Code Playgroud)

应考虑外语的特征(如ä,é,î).

Thi*_*ter 10

使用不区分大小写的比较:

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

这实际上是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']
Run Code Online (Sandbox Code Playgroud)