-1
的字典产量
假设我们有这样的字典,我需要通过其分行走,并产生在文件中找到的一切迭代使用字典
a={'files': {'file root':'some root path', 'other file': 'other path'},
'directories':{'directory1':{'files':{'file1':'some path'},
'directories':{'directory2':{'files':{},
'directories': {}}}},
'folder1':{'files':{},
'directories':{'folder2': {'files': {},
'directories': {}},
'archive1':{'files': {'empty':None},
'directories':{}}}}} }
我的实现看起来像这样
def walk_directory_files(directory):
directories = dict.__getitem__(directory, 'directories')
files = dict.__getitem__(directory, 'files')
for f in files:
yield f
for k,d in dict.items(directories):
walk_directory_files(d)
def walk_files(D):
return walk_directory_files(D)
# now lets try it
list(walk_files(a))
>> ['other file', 'file root']
我我不知道为什么循环内的walk_directory_files没有被调用!
你想实现什么?请描述更详细的问题。 – dhh
为什么'dict .__ getitem __()'调用而不是仅仅使用'get()',为什么额外的函数'walk_files()'? – Anthon
是的,你是对的,我复制我的代码,因为它是。在我的实现中,由于某种原因,字典a受到保护。所以我必须使用__getitem__。 我知道它是一个愚蠢的保护层,但为了避免直接覆盖密钥 – Cobry