python列表排序

时间:2012-02-12 10:58:43

标签: python sorting

我有一份清单,即

ls= [u'Cancer',u"Men's",u'Orthopedics',u'Pediatric',u"Senior's",u"Women's"]
由于列表元素中存在单引号,

ls.sort()似乎不起作用。

我需要对此列表进行排序。任何想法???

2 个答案:

答案 0 :(得分:5)

实际上,问题 有效,而一般情况的答案并不完全正确。 如果测试材料不是已经排序,它将无法正确按字母顺序排列,但'会导致列表按错误的顺序排序:

>>> l = ["'''b", "a", "a'ab", "aaa"]
>>> l.sort()
>>> l
["'''b", 'a', "a'ab", 'aaa']
>>> from functools import partial
>>> import string
>>> keyfunc = partial(string.replace, old="'", new="")
>>> l.sort(key=keyfunc)
>>> l
['a', 'aaa', "a'ab", "'''b"]

答案 1 :(得分:3)

>>> ls
[u'Cancer', u"Men's", u'Orthopedics', u'Pediatric', u"Senior's", u"Women's"]
>>> ls.sort()
>>> ls
[u'Cancer', u"Men's", u'Orthopedics', u'Pediatric', u"Senior's", u"Women's"]

由于列表首先排序,因此没有变化。 sort '没问题 - 但请注意它在 a-z A-Z 字符之前排序:

>>> ls
[u'abc', u'abz', u"ab'"]
>>> ls.sort()
>>> ls
[u"ab'", u'abc', u'abz']
>>>