3

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

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

Airplane
Boat
Car
Dog
apple
bicycle
cow
doctor

我用谷歌搜索了答案,但没有找到可行的算法。我阅读了有关locale模块和sort参数cmp以及key. 通常情况下,这lambda会与 连续出现sort,这让我无法更好地理解事情。

我怎样才能得到:

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 回答