一尘不染

按数字排序字符串列表

python

我有一个带有文件名的字符串列表:

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']

有没有简单的方法可以做到这一点?


阅读 253

收藏
2021-01-20

共1个答案

一尘不染

是:

flist.sort(key=lambda fname: int(fname.split('.')[0]))

说明:字符串按词法排序,因此"10"在字符串之前"3"(因为"1"<
"3",因此"1"忽略第一个字符串之后的内容)。因此,我们使用list.sort()key参数是一个回调函数,该函数接受一个列表项并返回用于对该项目进行排序的值-
在您的情况下,是从文件名的第一部分构建的整数。这样,列表就可以正确地按数值排序。

2021-01-20