<分区>
例如我有列表
my_list= ['image101.jpg', 'image2.jpg', 'image1.jpg']
和
my_list.sort()
给我
['image1.jpg', 'image101.jpg', 'image2.jpg']
但我当然需要
['image1.jpg', 'image2.jpg', 'image101.jpg']
如何实现?
<分区>
例如我有列表
my_list= ['image101.jpg', 'image2.jpg', 'image1.jpg']
和
my_list.sort()
给我
['image1.jpg', 'image101.jpg', 'image2.jpg']
但我当然需要
['image1.jpg', 'image2.jpg', 'image101.jpg']
如何实现?
最佳答案
list.sort
接受可选的 key
函数。每个项目都传递给函数,函数的返回值用于比较项目而不是原始值。
>>> my_list= ['image101.jpg', 'image2.jpg', 'image1.jpg']
>>> my_list.sort(key=lambda x: int(''.join(filter(str.isdigit, x))))
>>> my_list
['image1.jpg', 'image2.jpg', 'image101.jpg']
filter
, str.isdigit
用于提取数字:
>>> ''.join(filter(str.isdigit, 'image101.jpg'))
'101'
>>> int(''.join(filter(str.isdigit, 'image101.jpg')))
101
''.join(..)
在 Python 2.x 中不是必需的关于python - 根据字符串中的数字对字符串列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36259763/