2012-07-23 63 views
2

字符串列表可能重复:
How do I sort a list of strings in Python?
How do I sort unicode strings alphabetically in Python?排序在Python

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

Airplane 
Boat 
Car 
Dog 
apple 
bicycle 
cow 
doctor 

我用Google搜索了一个答案,但没有找到一个工作算法。我阅读了locale模块和sort参数cmpkey。经常有这lambdasort连续,这使我不能理解的事情。

我怎样才能得到:

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

到:外语

Airplane 
apple 
bicycle 
Boat 
Car 
cow 
doctor 
Dog 

字符,应考虑(如A,E,I)。

+2

你** **肯定你想要的输出? “狗”似乎在这个列表中错误的地方。 – ThiefMaster 2012-07-23 20:38:13

+0

@ecatmur这不是一个重复的问题,这个比unicode更不区分大小写 – 2012-07-23 20:40:12

+0

@ThiefMaster:谢谢,我纠正了它。 – rynd 2012-07-23 20:43:25

回答

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("This is a test string from Andrew".split(), key=str.lower) 
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This'] 
+0

击败了我。 – Wug 2012-07-23 20:37:23

+0

这是在'Bor'之后放置'Bär'。 – rynd 2012-07-23 20:51:10

4

似乎是话题在这里的一个很好的概述: http://wiki.python.org/moin/HowTo/Sorting/

向下滚动页面的相关这里;

例如,这里有一个不区分大小写字符串比较:

>>> sorted("This is a test string from Andrew".split(), key=str.lower)