我有一个带有文件名的字符串列表:
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']
有没有简单的方法可以做到这一点?
是:
flist.sort(key=lambda fname: int(fname.split('.')[0]))
说明:字符串按词法排序,因此"10"在字符串之前"3"(因为"1"< "3",因此"1"忽略第一个字符串之后的内容)。因此,我们使用list.sort()的key参数是一个回调函数,该函数接受一个列表项并返回用于对该项目进行排序的值- 在您的情况下,是从文件名的第一部分构建的整数。这样,列表就可以正确地按数值排序。
"10"
"3"
"1"
list.sort()
key