我有一个包含我的文件名的字符串列表: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条经验 获得超4个赞
是的:
flist.sort(key=lambda fname: int(fname.split('.')[0]))
解释:字符串按词法排序所以"10"
在之前"3"
(因为"1"
< "3"
,所以"1"
第一个字符串中的任何内容都被忽略)。所以我们使用list.sort()
'skey
参数,它是一个回调函数,它接受一个列表项并返回用于排序该项的值 - 在您的情况下,是从文件名的第一部分构建的整数。这样,列表就按数值正确排序。
四季花海
TA贡献1811条经验 获得超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
提交
取消