经过大量搜索,我似乎无法找到如何执行此操作。
字典:
mdr = {'main': {'sm': {'testm': {'test1': 'test', 'test2': 'test'}}, 'lm': {}, 'l': {}}}
我希望它看起来像这样:
-Main
--SM
---Testm
----Test1:Test
----Test2:Test
--LM
--L
我不会知道它将处理的子目录的确切数量,因此我需要制作一个循环来遍历整个目录。如果我知道字典有多远,我只知道如何显示整个目录。如果可能的话,我希望它显示所有可能的键。
请您参考如下方法:
我认为递归比循环更好。这非常接近。
def print_dict(d, current_depth=1):
for k, v in d.items():
if isinstance(v, dict):
print '-' * current_depth + str(k)
print_dict(v, current_depth + 1)
else:
print '-' * current_depth + str(k) + ':' + str(v)
输出(修复字典语法后):
>>> print_dict(mdr)
-main
--lm
--l
--sm
---testm
----test1:test
----test2:test
案例与您想要的输出不符,但您应该能够处理它。如果您想保留原始顺序,则需要使用 OrderedDict 而不是 dict。 dict 是一个哈希表,所以它可以对顺序做任何事情。 (幸运的是,isinstance(v, dict) 测试仍然适用于 OrderedDict。)
