猿问

以数字方式对字符串列表进行排序

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


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

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


牛魔王的故事
浏览 187回答 2
2回答

缥缈止盈

是的:flist.sort(key=lambda&nbsp;fname:&nbsp;int(fname.split('.')[0]))解释:字符串按词法排序所以"10"在之前"3"(因为"1"<&nbsp;"3",所以"1"第一个字符串中的任何内容都被忽略)。所以我们使用list.sort()'skey参数,它是一个回调函数,它接受一个列表项并返回用于排序该项的值 - 在您的情况下,是从文件名的第一部分构建的整数。这样,列表就按数值正确排序。

四季花海

你也可以这样做:flist = ['0.png','10.png', '3.png', '4.png', '100.png']flist.sort(key=lambda x: '{0:0>8}'.format(x))print(flist)
随时随地看视频慕课网APP

相关分类

Python
我要回答