Python排序列表[a1,a2 ... b1,b2]

时间:2015-09-16 09:15:14

标签: python python-3.x

这是我排序的列表:

>> list1.sorted()
>> list1
    ['tmp-0.gif', 'tmp-1.gif', 'tmp-10.gif', 'tmp-11.gif', 'tmp-12.gif', 'tmp-13.gif', 'tmp-14.gif', 'tmp-15.gif', 'tmp-16.gif', 'tmp-17.gif', 'tmp-18.gif', 'tmp-19.gif', 'tmp-2.gif', 'tmp-20.gif', 'tmp-21.gif', 'tmp-22.gif', 'tmp-23.gif', 'tmp-24.gif', 'tmp-25.gif', 'tmp-26.gif', 'tmp-27.gif', 'tmp-28.gif', 'tmp-29.gif', 'tmp-3.gif', 'tmp-30.gif', 'tmp-31.gif', 'tmp-4.gif', 'tmp-5.gif', 'tmp-6.gif', 'tmp-7.gif', 'tmp-8.gif', 'tmp-9.gif']

我需要这个:

['tmp-0.gif', 'tmp-1.gif', 'tmp-2.gif' ... 'tmp-31.gif']

['tmp-0.gif', 'tmp-1.gif', 'tmp-10.gif'...]

Does Python have a built in function for string natural sort?解决问题,但我需要下载方法......以下答案仅使用基本python解决了问题

1 个答案:

答案 0 :(得分:2)

执行此操作的一种方法 -

list1.sort(key= lambda x: int(x.split('.')[0].split('-')[1]))

示例 -

>>> lst1 = ['tmp-0.gif', 'tmp-1.gif', 'tmp-10.gif', 'tmp-11.gif', 'tmp-12.gif', 'tmp-13.gif', 'tmp-14.gif', 'tmp-15.gif', 'tmp-16.gif', 'tmp-17.gif', 'tmp-18.gif', 'tmp-19.gif', 'tmp-2.gif', 'tmp-20.gif', 'tmp-21.gif', 'tmp-22.gif', 'tmp-23.gif', 'tmp-24.gif', 'tmp-25.gif', 'tmp-26.gif', 'tmp-27.gif', 'tmp-28.gif', 'tmp-29.gif', 'tmp-3.gif', 'tmp-30.gif', 'tmp-31.gif', 'tmp-4.gif', 'tmp-5.gif', 'tmp-6.gif', 'tmp-7.gif', 'tmp-8.gif', 'tmp-9.gif']
>>> lst1.sort(key= lambda x: int(x.split('.')[0].split('-')[1]))
>>> lst1
['tmp-0.gif', 'tmp-1.gif', 'tmp-2.gif', 'tmp-3.gif', 'tmp-4.gif', 'tmp-5.gif', 'tmp-6.gif', 'tmp-7.gif', 'tmp-8.gif', 'tmp-9.gif', 'tmp-10.gif', 'tmp-11.gif', 'tmp-12.gif', 'tmp-13.gif', 'tmp-14.gif', 'tmp-15.gif', 'tmp-16.gif', 'tmp-17.gif', 'tmp-18.gif', 'tmp-19.gif', 'tmp-20.gif', 'tmp-21.gif', 'tmp-22.gif', 'tmp-23.gif', 'tmp-24.gif', 'tmp-25.gif', 'tmp-26.gif', 'tmp-27.gif', 'tmp-28.gif', 'tmp-29.gif', 'tmp-30.gif', 'tmp-31.gif']