python - 对列表中的文件进行排序

标签 python

假设我有一个文件列表

files = ['s1.txt', 'ai1.txt', 's2.txt', 'ai3.txt']

我需要根据它们的数量将它们分类到子列表中,这样

files = [['s1.txt', 'ai1.txt'], ['s2.txt'], ['ai3.txt']]

我可以写一堆循环,但我想知道是否有更好的方法来做到这一点?

最佳答案

这是一个基于 defaultdict 的完整的工作示例:

import re
from collections import defaultdict

files = ['s1.txt', 'ai1.txt', 's2.txt', 'ai3.txt']

def get_key(fname):
   return int(re.findall(r'\d+', fname)[0])

d = defaultdict(list)
for f in files:
   d[get_key(f)].append(f)

out = [d[k] for k in sorted(d.keys())]
print(out)

这会产生:

[['s1.txt', 'ai1.txt'], ['s2.txt'], ['ai3.txt']]

关于python - 对列表中的文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9466017/

相关文章:

python - 在 Pandas 上以不同方式计算整数和字符串

Python MP3 ID3 标签编辑器

python - 如何轮询/sys中的文件

python - 如何在 numpy 中获得逐元素矩阵乘法(Hadamard 乘积)?

python - 绘制两个不同大小的网格。较小的网格以较大的网格为中心

python - 即使通过 webdriver+python 设置浏览器首选项后也无法抑制操作系统下载文件窗口

python - 在 python scrapy 中获取文本

python - 如何在一行中找到一个子字符串并从该行追加到下一个子字符串?

python - 在 Azure Databricks 中按范围内的值进行分组

python - 创建自定义对象的 numpy 数组会出现错误 "SystemError: error return without exception set"