【问题标题】:python - collect full path till leaf on organization treepython - 收集完整路径直到组织树上的叶子
【发布时间】:2022-11-20 23:00:04
【问题描述】:

我将组织树存储为 json

{
    "name": "amos",
    "direct_reports": [
        {
            "name": "bart",
            "direct_reports": [
                {
                    "name": "colin",
                    "direct_reports": []
                },
                {
                    "name": "clara",
                    "direct_reports": []
                }
            ]
        },
        {
            "name": "bravo",
            "direct_reports": [
                {
                    "name": "cupid",
                    "direct_reports": []
                },
                {
                    "name": "clever",
                    "direct_reports": []
                }
            ]
        }
    ]
}

我需要为每个员工存储完整的“管理路径”,例如: management_chain["聪明"]={bravo,amos} management_chain["bart"]={amos}

目前我设法到达所有边缘并将它们分类为员工和经理,代码如下:

def get_herarchy(org):
    tmp_obj = {}
    tmp_obj['managers'] = []
    for emp in org['direct_reports']:
        tmp_obj['managers'].append(org['name'])
        print("manager "+org['name'])
        if len(emp['direct_reports'])>0:
            get_herarchy(emp)
        tmp_obj['name'] = emp['name']
        print(emp['name'])
    return tmp_obj

但是字典没有正确的值

【问题讨论】:

    标签: python tree breadth-first-search


    【解决方案1】:

    像这样,也许:

    def get_chain(org, name):
        if org['name'] == name:
            return [name]
        for emp in org['direct_reports']:
            chain = get_chain(emp, name)
            if chain:
                return [org['name']] + chain
        return None
    
    print(get_chain(org, 'bart'))    # ['amos', 'bart']
    print(get_chain(org, 'clever'))  # ['amos', 'bravo', 'clever']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2020-07-01
      • 2013-02-26
      • 2018-06-11
      • 2022-01-26
      • 1970-01-01
      相关资源
      最近更新 更多