假设我有一个文件列表
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/