python列表的自定义顺序

时间:2015-01-18 19:51:26

标签: python

我正在使用 glob.glob()来获取目录中的文件列表。

结果是这个列表。有一种方法可以使用文件名的int部分对它进行排序吗?

['export_p-01.xml',
 'export_p-02.xml',
 'export_p-03.xml',
 'export_p-04.xml',
 'export_p-05.xml',
 'export_p-06.xml',
 'export_p-07.xml',
 'export_p-08.xml',
 'export_p-09.xml',
 'export_p-10.xml',
 'export_p-100.xml',
 'export_p-101.xml',
 'export_p-102.xml',
 'export_p-103.xml',
 'export_p-104.xml',
 'export_p-105.xml',
 'export_p-106.xml',
 'export_p-107.xml',
 'export_p-108.xml',
 'export_p-109.xml',
 'export_p-11.xml',
]

1 个答案:

答案 0 :(得分:1)

在这里,您可以使用自定义lambda作为键:

In [1]: l = ['export_p-01.xml', ...]

In [2]: sorted(l, key = lambda x: int(x.split(".")[0].split("-")[-1]))
Out[2]: 
['export_p-01.xml',
 'export_p-02.xml',
 'export_p-03.xml',
 'export_p-04.xml',
 'export_p-05.xml',
 'export_p-06.xml',
 'export_p-07.xml',
 'export_p-08.xml',
 'export_p-09.xml',
 'export_p-10.xml',
 'export_p-11.xml',
 'export_p-100.xml',
 'export_p-101.xml',
 'export_p-102.xml',
 'export_p-103.xml',
 'export_p-104.xml',
 'export_p-105.xml',
 'export_p-106.xml',
 'export_p-107.xml',
 'export_p-108.xml',
 'export_p-109.xml']