python获取当前节点路径_获取树的每个节点的完整路径

# -*- coding:utf-8 -*-

# 需求: 部门是分上下级的, 每个部门都只有一个父部门, 存储时,

一个部门对应一个父部门存储一条记录, 现在要获取每个部门的完整部门名。

def

update_children_relations():

"""

由父部门所属关系转化为子部门包含关系

:param:

:return:

"""

for d in parent_relations:

p =

parent_relations[d]

if p not

in children_relations:

children_relations[p] =

[]

children_relations[p].append(d)

def

update_full_name_dict(target_departments,

parent_full_name):

"""

完善 full_name_dict, 把 target_departments 增加到

full_name_dict 中

:param target_departments: 待计算完整路径的目标部门 id 列表

:param parent_full_name: 所有

target_departments 的父部门 name

:return:

"""

for t in target_departments:

new_parent_full_name = parent_full_name + '/' + name_dict.get(t,

'') if parent_full_name \

else name_dict.get(t,

'')

full_name_dict[t] = new_parent_full_name

update_full_name_dict(children_relations.get(t, []),

new_parent_full_name)

if __name__ ==

'__main__':

# d1, d2, d3, d4 都是叶子节点

# p0, p1, p2, p3 都是非叶子节点

parent_relations = { #

父部门所属关系, value 是父部门 id

'd1':

'p1',

'd2':

'p1',

'd3':

'p2',

'd4':

'p3',

'p3':

'p1',

'p1':

'p0',

'p2':

'p1'

}

name_dict = { # 部门 name

字典

'd1':

'd1',

'd2':

'd2',

'd3':

'd3',

'd4':

'd4',

'p0':

'p0',

'p1':

'p1',

'p2':

'p2',

'p3':

'p3'

}

top_department_id = 'p0'

children_relations = {}

update_children_relations()

full_name_dict = {}

update_full_name_dict([top_department_id],

'')

print full_name_dict

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值