python函数返回更多dicts

时间:2011-12-18 12:01:16

标签: python

为什么这个递归函数返回多个字典,也就是每次循环时都打印它们为什么不在现有字典中添加新的发现。

不,我不想使用os.walk,是的,我知道没有回复

def retFiles(dir):
    data = {}
    root = set()
    os.chdir(dir)
    cwd = os.getcwd()
    for i in os.listdir(cwd):
        if os.path.isfile(i):
            data.setdefault(i, set())
            root.add(os.path.relpath(dir).replace("\\", "/"))
            data[i] = root
        else:
            retFiles(i)
    print(data)

2 个答案:

答案 0 :(得分:3)

当您设置retfiles()时,每次调用data = {}时都会创建一个新词典。因此,它无法附加到调用方范围内的data字典。

答案 1 :(得分:2)

将您的词典作为参数传递以保持对同一词典的引用,或使用return来使用前一次调用的词典。

无论哪种方式,你的递归函数,因为所有递归调用,都需要处理相同的数据,否则它是无用的。