用于打印分层字典的递归方法

Tes*_*nim 3 python dictionary python-3.x

我想用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',
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

并给它这样:

--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
Run Code Online (Sandbox Code Playgroud)

我做了这个方法:

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

运行代码时出现此错误:

AttributeError: 'str' object has no attribute 'keys'
Run Code Online (Sandbox Code Playgroud)

如何制作允许我打印此层次结构的脚本?我对字典不是很好.我正在使用Python 3.请帮忙吗?谢谢.

Flo*_*mer 5

你需要重现确切的订单吗?你可以使用这样的东西来遍历数据结构:

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)
Run Code Online (Sandbox Code Playgroud)