作者:这辈子没有你 | 来源:互联网 | 2022-12-02 16:30
我有一个包含我的文件名的字符串列表:
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']
有一个简单的方法吗?
1> bruno desthu..:
是:
flist.sort(key=lambda fname: int(fname.split('.')[0]))
说明:字符串是词法排序的,所以"10"
在之前"3"
(因为"1"
<"3"
,所以"1"
忽略第一个字符串之后的任何内容).所以我们使用list.sort()
的key
参数是一个回调函数,它接受一个列表项并返回用于该项的排序的值 - 在你的例子中,是一个从文件名的第一部分构建的整数.这样,列表就可以在数值上正确排序.