# -*- 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