Skip to main content
 首页 » 编程设计

Python循环整个字典

2025年05月04日17www_RR

经过大量搜索,我似乎无法找到如何执行此操作。

字典:

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。)