【问题标题】:Sort folder names in Python [duplicate]在Python中对文件夹名称进行排序[重复]
【发布时间】:2021-08-20 00:59:17
【问题描述】:

我想按 Python 对子文件夹名称列表进行排序,但它不能以所需的方式工作。

files = ['file_37.png', 'file_8.png', 'file_13.png', 'file_114.png', 'file_115.png']
sorted(files)

输出:

['file_114.png', 'file_115.png', 'file_13.png', 'file_37.png', 'file_8.png']

显然,Python 正在以字典形式对名称进行排序,而不考虑 '_' 之后数字的整数值。但是,我想要得到的是:

['file_8.png', 'file_13.png', 'file_37.png','file_114.png', 'file_115.png']

谁能告诉我如何在 Python 中获得所需的输出?

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以使用key,这对于以您自己的方式进行排序很有用

    key 将函数作为参数。我所做的是我已经用_ 分割了字符串并取了它的第二部分(索引1)。例如,如果file_37.png 使用_ 进行拆分,那么它将给出['file', '37.png'] 的列表。所以使用1 作为索引将返回37.png。然后再次使用. 进行拆分,我使用了返回文件号的0 索引。

    def split_x(x):
      a = x.split('_')[1]
      a = a.split('.')[0]
      return int(a)
    
    files = ['file_37.png', 'file_8.png', 'file_13.png', 'file_114.png', 'file_115.png']
    sorted(files, key=split_x)
    

    【讨论】:

    • 谢谢,普拉卡什!现在一切都清楚了!
    • 对不起,普拉卡什。即使我想投票,我也无法投票,因为我还没有足够的声望。
    猜你喜欢
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多