按数字排序字符串列表

发布于 2021-01-29 14:10:02

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

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

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

关注者
0
被浏览
151
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    是:

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看