我有一個包含我的文件名的字符串列表:flist = ['0.png','10.png', '3.png', '4.png', '100.png']flist.sort()print(flist)輸出:['0.png', '10.png', '100.png', '3.png', '4.png']但是我想要:['0.png', '3.png', '4.png', '10.png', '100.png']有沒有一種簡單的方法可以做到這一點?
2 回答

縹緲止盈
TA貢獻2041條經(jīng)驗 獲得超4個贊
是的:
flist.sort(key=lambda fname: int(fname.split('.')[0]))
解釋:字符串按詞法排序所以"10"
在之前"3"
(因為"1"
< "3"
,所以"1"
第一個字符串中的任何內容都被忽略)。所以我們使用list.sort()
'skey
參數(shù),它是一個回調函數(shù),它接受一個列表項并返回用于排序該項的值 - 在您的情況下,是從文件名的第一部分構建的整數(shù)。這樣,列表就按數(shù)值正確排序。

四季花海
TA貢獻1811條經(jīng)驗 獲得超5個贊
你也可以這樣做:
flist = ['0.png','10.png', '3.png', '4.png', '100.png']
flist.sort(key=lambda x: '{0:0>8}'.format(x))
print(flist)
添加回答
舉報
0/150
提交
取消