清理文件夹列表,仅保留每个文件夹组中的顶级文件夹

我刚刚开始编写Python编程,希望一些经验丰富的人可以给我
有关如何优化以下代码提示.

我想要做的是浏览文件夹列表,使新列表仅包含每组文件夹中的顶级文件夹.

我一直在努力并编写下面的代码来完成工作,但是当使用包含数千个文件夹的列表时,伸缩性会非常差.

欢迎任何喜欢如何优化此例程的想法.

folderlist = [  "c:\\temp\\data\\1122 AA",\
                "c:\\temp\\data\\1122 AA\\Div",\
                "c:\\temp\\data\\1122 AA\\Div\\Etc",\
                "c:\\temp\\data\\1122 AA\\Div\\Etc2",\
                "c:\\temp\\server1\\div\\2244_BB",\
                "c:\\temp\\server1\\div\\2244_BB\\pp",\
                "c:\\temp\\server1\\div\\2244_BB\\der\\dedd",\
                "c:\\temp\\server1\\div\\2244_BB\\defwe23d\\23ded",\
                "c:\\temp\\123456789-BB",\
                "c:\\temp\\123456789-BB\\pp",\
                "c:\\temp\\123456789-BB\\der\\dee32d",\
                "c:\\temp\\data\\123456789-BB\\ded\\ve_23"]

l2 = folderlist.copy()
ind = []
indexes_to_be_deleted = []

for el in l2:
    for idx,x in enumerate(l2):
        if el in x:
            ind.append(idx)

counts = Counter(ind)

for l,count in counts.most_common():
    if count > 1:
        indexes_to_be_deleted.append(l)    

for i in sorted(indexes_to_be_deleted,reverse=True): 
    del folderlist[i]

Output:
c:\\temp\\data\\1122 AA\\
c:\\temp\\server1\\div\\2244_BB\\
c:\\temp\\123456789-BB\\

输出是预期的,只有每组文件夹中的顶级文件夹.但是,我希望你们中的一些人有一个如何使例程更快的想法.

最佳答案
我建议添加到新列表,而不是删除项目:

topFolders = [] 
for name in folderlist:  # sorted(folderlist) if they are not already in order
    if topFolders and name.startswith(topFolders[-1]+"\\"): continue
    topFolders.append(name)

您可以根据需要将其分配给原始列表

folderlist = topFolders

相关文章

在这篇文章中,我们深入学习了XPath作为一种常见的网络爬虫技巧。XPath是一种用于定位和选择XML文档中特...
祝福大家龙年快乐!愿你们的生活像龙一样充满力量和勇气,愿你们在新的一年里,追逐梦想,勇往直前,不...
今天在爬虫实战中,除了正常爬取网页数据外,我们还添加了一个下载功能,主要任务是爬取小说并将其下载...
完美收官,本文是爬虫实战的最后一章了,所以尽管本文着重呈现爬虫实战,但其中有一大部分内容专注于数...
JSON是一种流行的数据传输格式,Python中有多种处理JSON的方式。官方的json库是最常用的,它提供了简单...
独立样本T检验适用于比较两组独立样本的均值差异,而配对T检验则适用于比较同一组样本在不同条件下的均...