根据文件中的数字对文件进行排序

时间:2013-10-07 08:44:11

标签: python sorting

我的文件很少......

l.1,l.3,l.2,l.12,l.36,l.24

当我对列表进行排序时,它正在给我......

l.1,l.12,l.2,l.24,l.3,l.36

我怎样才能以这种方式获得它们?...

l.2,l.2,l.3,l.12,l.24,l.36

注意:因为它不允许添加实际文件名,因为它已将其作为列表提供。但实际的文件名由'。'连接。喜欢l.1 l.2

我可以为此编写一个冒泡排序算法。但我想要一种更简单的方式..
感谢

3 个答案:

答案 0 :(得分:1)

你走了:

  l =  ['l.1','l.3','l.2','l.12','l.36','l.24']
  sorted(l, key = lambda x: int(x[2:]))

答案 1 :(得分:1)

在一行中:

>>> li = ["l.1", "l.3", "l.2", "l.12", "l.36", "l.24"]
>>> sorted(li, key=lambda x: int(x.split(".")[-1]))
['l.1', 'l.2', 'l.3', 'l.12', 'l.24', 'l.36']

答案 2 :(得分:0)

如Python文档中所述,列表中的sort函数需要多个参数(relevant section here)。

您可以使用key参数来指定获取密钥的函数。您案例的实施可能是:

def key_fn(n):
    return int(n.split('.')[-1])

然后你可以这样做:

l = ["l.1","l.3","l.2","l.12","l.36","l.24"]
l.sort(key=key_fn)