0
21
36
14
为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

牛魔王的故事 2021-06-29 10:32:27
我有一个包含我的文件名的字符串列表: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']有没有一种简单的方法可以做到这一点?

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

是的:

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

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


查看完整回答
反对 回复 2021-07-13
?
四季花海

TA贡献1811条经验 获得超5个赞

你也可以这样做:


flist = ['0.png','10.png', '3.png', '4.png', '100.png']

flist.sort(key=lambda x: '{0:0>8}'.format(x))

print(flist)


查看完整回答
反对 回复 2021-07-13

没有找到匹配的内容?试试慕课网站内搜索吧

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号