私信  •  关注

quamrana mzoll

quamrana mzoll 最近创建的主题
quamrana mzoll 最近回复了
6 年前
回复了 quamrana mzoll 创建的主题 » python for loop只将最后一个列表作为值追加

听起来你在找 defaultdict .

我修改了你的代码如下:

import glob, os
from collections import defaultdict

class FileAndFolderHandling() :
    folders_and_files = defaultdict(list)

    def __init__(self) :
        self.getSubfolderAndImageFileNames()

    def getSubfolderAndImageFileNames(self) :
        for filename in glob.iglob(r'C:\Temp\T\**\*.txt', recursive=True) :
            # print(filename)
            subfolder = os.path.dirname(filename)
            self.folders_and_files[subfolder].append(os.path.basename(filename))


folder_content = FileAndFolderHandling()

print(dict(folder_content.folders_and_files))

Output:
{'C:\\Temp\\T': ['X.txt'], 'C:\\Temp\\T\\X': ['X1.txt', 'X2.txt'], 'C:\\Temp\\T\\X2': ['X1.txt']}

这个 defaultdict(list) 为添加的每个新密钥创建一个新列表。这似乎是你希望在代码中发生的事情。