在排序的for循环中将引用列表项作为键

1 投票
1 回答
530 浏览
提问于 2025-04-16 14:57

抱歉问了个无聊的问题,但我搞不明白这个:

for f in sorted(os.listdir('.')): print f

输出:

p1.html
p10.html
p11.html
p12.html
p13.html
p14.html
p15.html
p16.html
p17.html
p18.html
p19.html
p2.html
p20.html
p21.html
p22.html
p3.html
p4.html
...

显然,我想按数字排序,我可以用这个关键字:f.split('.')[0][1:],但是在这个循环中怎么引用这个关键字呢?

我试过 for f in sorted(os.listdir('.'), key=f.split('.')[0][1:]),但当然不行。

谢谢大家!

1 个回答

1

你需要用到一个叫做“lambda 表达式”的东西:

sorted(os.listdir('.'), key=lambda f: int(f.split('.')[0][1:]))

撰写回答