python - 打印层次字典的递归方法

标签 python python-3.x dictionary

我想用 Python 创建一个递归方法来打印这个字典:

partners = {
        'manager-1': {
            'name': 'Manager 1',
            'children': {
                'manager-2': {
                    'name': 'Manager 2',
                    'children': {
                        'employee-1': {
                            'name': 'Employee 1',
                            'children': {
                                'employee-7': {
                                    'name': 'Employee 7',
                                },
                                'employee-8': {
                                    'name': 'Employee 8',
                                }
                            }
                        },
                        'employee-2': {
                            'name': 'Employee 2',
                        },
                        'employee-3': {
                            'name': 'Employee 3',
                        },
                    },
                },
                'manager-3': {
                    'name': 'Manager 3',
                    'children': {
                        'employee-4': {
                            'name': 'Employee 4',
                        },
                        'employee-5': {
                            'name': 'Employee 5',
                        },
                        'employee-6': {
                            'name': 'Employee 6',
                        },
                    },
                },
                'manager-4': {
                    'name': 'Manager 4',
                },
                'manager-5': {
                    'name': 'Manager 5',
                }
            }
        }
    }

然后像这样给出:

--Manager 1
----Manager 2
------Employee 1
--------Employee 7
--------Employee 8
------Employee 2
------Employee 3
----Manager 3
------Manager 4
------Manager 5
------Manager 6
----Manager 4
----Manager 5

我做了这个方法:

def hierarch(partners):
    for partner in partners:
        if 'children' not in partner.keys(): 
            print(partner['name'])
        else:
            hierarch(partner['children'])

我在运行代码时遇到了这个错误:

AttributeError: 'str' object has no attribute 'keys'

我怎样才能制作一个允许我打印这个层次结构的脚本?我不太擅长字典。我正在使用 Python 3。有什么帮助吗?谢谢。

最佳答案

您需要重现确切的顺序吗?您可以使用类似这样的方法来遍历数据结构:

def recurse(data, level):
    if type(data) is dict:
        if "name" in data:
            print("-" * level + data["name"])
        for (key, value) in data.items():
            recurse(value, level + 1)
recurse(partners, 1)

关于python - 打印层次字典的递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52625673/

相关文章:

python - get_serving_url 通过 remote_api_shell.py

python - 将字符串中的字符与其索引号相乘

python - 使用 itemAt 从 QFormLayout 中的 QLineEdit 获取文本

python - 如何定义模块的导入?

javascript - 如何使用 JavaScript 中的 DOM 操作函数将 <map> 元素添加到文档中?

python - 返回字典 Python 中所有值的总和

python - Flask Sql-alchemy 不会删除 alembic 创建的表

python - 带有带状雅可比矩阵的 Scipy odeint

python - 如何在日期间隔内添加缺失的日期?

C++ 映射 - 表达式必须是整型常量表达式