我有一个列表,其中包含一些字符串中的章节编号。 当我使用键功能对键进行排序时,它会给我错误的结果。
keys = ['1.1', '1.2', '2.1', '10.1'] keys.sort() print keys ['1.1', '1.2', '10.1', '2.1']
如何使用sort函数获取
['1.1', '1.2', '2.1', '10.1']
如果阵列有这样的东西怎么办?
['1.1.1', '1.2.1', '10.1', '2.1'] -> ['1.1.1','1.2.1','2.1','10.1']
答案 0 :(得分:10)
keys.sort(key=lambda x: [int(y) for y in x.split('.')])
答案 1 :(得分:4)
from distutils.version import StrictVersion
keys.sort(key=StrictVersion)
由于章节编号是版本号的子集,因此可以满足您的需求。
答案 2 :(得分:2)
这有效:
keys.sort(key=lambda x: map(int, x.split('.')))
答案 3 :(得分:1)
为key
或sort
提供自定义sorted
参数。
来自http://docs.python.org/library/functions.html#sorted:
key指定一个参数的函数,该函数用于从每个列表元素中提取比较键:key = str.lower。默认值为None(直接比较元素)。