python - 根据字符串中的数字对字符串列表进行排序

标签 python list sorting

<分区>

例如我有列表

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/

相关文章:

python - 在 Python 中对列表进行分段

java - 带基数排序的 NullPointerException

python - 使用Python/urllib访问 "siteminder"认证的网站?

python - 如何在 Python 中使用 MinGW-w64 构建我的 C 扩展?

python - python 中的列表扩展

list - 删除列表中多个数据帧的特定行

java - 在java中对键/值列表进行排序的最快方法

用于存储排序的唯一值的 C++ 容器,具有不同的谓词以实现排序和唯一性

python - 写入和读取 ndarray

python - 如何转置特定行并在 unix 或 python 中以以下格式显示数据