我有一个文件名列表,目前按“文件类别”排序,例如:
list = ['categorya.1.file','categorya.2.file','categoryb.1.file','categoryc.1.file']
可能的类别数目是任意的。给定类别中的文件数是任意的。你知道吗
我希望重新排列列表,以便它每次读取一个类别。因此,上述列表将重新排列为:
newlist = ['categorya.1.file', 'categoryb.1.file', 'categoryc.1.file', 'categorya.1.file']
这些列表的长度可能会很长,所以我认为效率是关键。最好的方法是什么?你知道吗
下面的内容看起来比实际情况更糟—它只是使用
groupby
按类别将列表分解为列表,然后使用roundrobin
将这些列表合并为单个列表。你知道吗使用itertools:
印刷品:
您只需按转换为int的数字进行排序,使用最后一个字母打破关系:
输出:
如果您不关心类别分组后的顺序,那么只需使用
int
:.sort
已就位,因此不需要创建任何其他列表。你知道吗相关问题 更多 >
编程相关推荐