形如这种有多个关键字的list
list = ['a222_1_0.797911.png', 'a222_2_0.845443.png', 'a222_3_0.753170.png',
'a222_4_0.764250.png', 'a222_5_0.785842.png', 'a222_6_0.750649.png',
'a222_7_0.751012.png', 'a222_8_0.761352.png', 'a222_9_0.762369.png',
'a222_10_0.750486.png', 'a222_11_0.751703.png', 'a222_12_0.769575.png',
'a222_13_0.749994.png', 'a222_14_0.750260.png', 'a222_15_0.756653.png',
'a222_16_0.749484.png', 'a222_17_0.748359.png', 'a222_18_0.749407.png',
'a222_19_0.751062.png', 'a222_20_0.748874.png', 'a222_21_0.749563.png',
'a222_22_0.748304.png', 'a222_23_0.748355.png', 'a222_24_0.753072.png',
'a222_25_0.750552.png', 'a222_26_0.748127.png', 'a222_27_0.747977.png',
'a222_28_0.748136.png', 'a222_29_0.748381.png', 'a222_30_0.746901.png']
# lambda x:(第一个关键字,第二个关键字...)
# int把提取的数字转为整型,然后排序,结果就不是1,10,11,12,2,20,21这种了
list.sort(key = lambda x: (int(x.split('_')[0][1:]), int(x.split('_')[1]), int(x.split('_')[2])))
解释
用lamdba函数指定排序的依据,如果需要多个关键字作为依据进行排序,可以用形如 lamdba x : (key1, key2, …) 的方式指定。
在上面的代码中三个关键字是int(x.split(’’)[0][1:]),int(x.split(’’)[1]),int(x.split(’’)[3]),
以第一个关键字为例进行解释。
1.首先需要将标签根据"“进行分割,即x.split(’’),
2.然后先按第一个数字进行排序,取分割后的第一部分x.split(’’)[0],
3. 索引[1:] 去掉数字前的"a”,x.split(’_’)[0][1:]
参考
https://blog.csdn.net/keevinzha/article/details/104453032