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

时间:2012-07-23 20:33:47

标签: python string sorting

  

可能重复:
  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参数cmpkey。通常lambdasort连续存在,这使得我无法理解这些内容。

我如何得到:

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

为:

Airplane
apple
bicycle
Boat
Car
cow
doctor
Dog

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

2 个答案:

答案 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)