如何在python中创建嵌套字典的字符串无循环作为其对应树的一系列分支

问题描述

问题:

如下例所示打印字典的函数

recursive_dict = {

   'a': 1,'b': {
       'c': 1,'d': 4
   },'e':
   {
       'f': 3,'g':
       {
           'h': 5,'i': 6
       }
   },'j': 10
}
to
'a' - 1
'b' - 'c' - 1
'b' - 'd' - 4
'e' - 'f' - 3
'e' - 'g' - 'h' - 5
'e' - 'g' - 'i' - 6
'j' - 10

我的代码:

由于我是python初学者,所以欢迎对代码提出任何批评,或者采取任何使它更易于阅读的方式。较高级别的递归值后,代码将不起作用,因为它保留了旧密钥。我认为我必须检测字典何时结束,以便从old_key中删除我串联的最后一个键。 再难一点?想法是将字典转换为树,然后继续读取树的所有分支。

def print_dictionary_tree(tree_dict,default_separator='-',branch="",old_key=""):
    for key,value in tree_dict.items():
        if type(value) != dict:
            if old_key == "":
                branch += f"%{key}% {default_separator} {value} \n"
            else:
                branch += f"{old_key} {default_separator} /{key}/ {default_separator} {value} \n"
        else:
            if old_key != "":
                old_key += f" {default_separator} %{key}%"
            elif key != value.get(key):
                old_key += f"^{key}^"
            branch += print_dictionary_tree(value,default_separator,"",old_key)
    return branch

返回

'a' - 1 
'b' - 'c' - 1 
'b' - 'd' - 4 
'b' - 'e' - 'f' - 3 
'b' - 'e' - 'g' - 'h' - 5 
'b' - 'e' - 'g' - 'i' - 6 
'b' - 'e' - 'j' - 10 

有用的链接我发现类似,但无法修复我的功能:

List of branches of a Python tree

Loop through all nested dictionary values?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)