Skip to main content
 首页 » 编程设计

python之根据名称(月)排序字符串列表

2025年05月04日23qq78292959

我有一个图形列表,我想创建一个文本文件(使用 python),其中它们的名称按特定顺序列出(用于使用 mencoder 制作电影)。特别是在这里,数字名称包括月份(四月、八月……)。我首先想要 Januray 的,然后是 2 月的,依此类推。

我知道我可以用丑陋的方式做到这一点,但我对既优雅(=pythonic?)又最终更通用的解决方案感兴趣。

我的文件按自然顺序排列:
cld_for_April_EISopt_1000.png
cld_for_August_EISopt_1000.png
cld_for_December_EISopt_1000.png
cld_for_February_EISopt_1000.png
cld_for_January_EISopt_1000.png
cld_for_July_EISopt_1000.png
cld_for_June_EISopt_1000.png
cld_for_March_EISopt_1000.png
cld_for_May_EISopt_1000.png
cld_for_November_EISopt_1000.png
cld_for_October_EISopt_1000.png
cld_for_September_EISopt_1000.png

我想要一个包含这个的文本文件:
cld_for_January_EISopt_1000.png
cld_for_February_EISopt_1000.png
cld_for_March_EISopt_1000.png
cld_for_April_EISopt_1000.png
cld_for_May_EISopt_1000.png
cld_for_June_EISopt_1000.png
cld_for_July_EISopt_1000.png
cld_for_August_EISopt_1000.png
cld_for_September_EISopt_1000.png
cld_for_October_EISopt_1000.png
cld_for_November_EISopt_1000.png
cld_for_December_EISopt_1000.png

或者更一般地说,如果我有一个列表、数组或字典,例如:
{'pattern1': rank_in_output_list_1, ..., 'pattern12': rank_in_output_list_12}
我应该如何使用它来为我的文件名排序?

到目前为止,我玩过:os.listdir、os.path.isfile、numpyp.ma.array、.compressed() 或 .compress();但我还没有那么成功。

非常感谢。
克里斯托夫。

请您参考如下方法:

作为排序的key,用_分割,映射第三个元素。

sorted(filenames, key=lambda x: monthdict[x.split('_')[2]])