可能重复:
How do I sort a list of strings in Python?
How do I sort unicode strings alphabetically in Python?
我有一个字符串列表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
应考虑外语的特征(如ä,é,î)。
答案 0 :(得分:10)
使用不区分大小写的比较:
>>> sorted(['Dog', 'bicycle', 'cow', 'doctor', 'Car', 'Boat',
'apple', 'Airplane'], key=str.lower)
['Airplane', 'apple', 'bicycle', 'Boat', 'Car', 'cow', 'doctor', 'Dog']
这实际上是python wiki about sorting上建议的方式:
从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']
答案 1 :(得分:4)
这里似乎有一个很好的概述: http://wiki.python.org/moin/HowTo/Sorting/
向下滚动一页到此处;
例如,这是一个不区分大小写的字符串比较:
>>> sorted("This is a test string from Andrew".split(), key=str.lower)