根据字符串列表实现部门树

Rafeal
  • 8

有如下一个字符串列表,每个字符串中“-”分割的是不同的部门,部门之间是父子关系,从左到右部门层级加一,第一个如“商业中心”是一级部门,依次类推。同一个父级部门下子部门名称不重复,如第一个字符串中“真美鲜”和第三个字符串中的“真美鲜”是同一个部门。请根据下列字符串列表,实现一个部门树结构的数据列表,每条数据以字典形式给出,包括部门名称(name), 编号(id),层级(level)---是几级部门,父级部门编号(parent_id);一级部门父级部门编号为0.

str_list = [
    "商业中心-真鲜美-运营部-产品运营组-数据运营",
    "商业中心-CTO-技术部-产品组",
    "商业中心-真鲜美-销售部-销售渠道组-区域",
    "商业中心-HRBP",
    "商业中心-真鲜美-市场部-市场推广",
    "商业中心-真鲜美-销售部",
    "商业中心-真鲜美-销售部-客户支持组",
    "商业中心-真鲜美-运营部-物流组",
    "商业中心-CTO-技术部-产品组-设计",
    "商业中心-海鲜贸易",
    "商业中心-真鲜美-商品部-果蔬品类组-商品采购",
    "商业中心-真鲜美-运营部-PMO",
    "商业中心-真鲜美-销售部-销售渠道组-总部",
    "商业中心",
    "商业中心-真鲜美-销售部-新媒体分销",
    "商业中心-CTO-技术部-开发组-前端开发",
    "商业中心-真鲜美-商品部-海鲜品类组",
    "商业中心-CTO-技术部-测试组",
    "商业中心-真鲜美-商品部-肉禽品类组-商品采购",
    "商业中心-真鲜美-商品部-海鲜品类组-类目运营",
    "商业中心-真鲜美-商品部-肉禽品类组",
    "商业中心-真鲜美-商品部-海鲜品类组-商品采购",
    "商业中心-真鲜美-商品部-果蔬品类组",
    "商业中心-真鲜美-运营部-客服组",
    "商业中心-真鲜美-商品部-商品管理组-运营商管理",
    "商业中心-CTO-技术部-产品组-产品",
    "商业中心-真鲜美-商品部-肉禽品类组-类目运营",
    "商业中心-真鲜美-运营部-物流组-品控",
    "商业中心-真鲜美-商品部-商品管理组-数据支持",
    "商业中心-CTO-技术部-开发组",
    "商业中心-真鲜美-商品部",
    "商业中心-CTO-技术部-开发组-后端开发",
    "商业中心-真鲜美-运营部",
    "商业中心-真鲜美-商品部-综合品类组",
    "商业中心-真鲜美-商品部-综合品类组-商品采购",
    "商业中心-真鲜美-运营部-产品运营组-频道运营",
]
回复
阅读 852
1 个回答
✓ 已被采纳
lst, id, d = [], 0, {}

for _ in str_list:
    names = _.split('-')
    for i, name in enumerate(names):
        if name in d:
            continue

        id += 1
        d[name] = id

        level = i + 1
        parent_id = d[names[i - 1]] if i else 0

        lst.append({'id': id, 'name': name, 'level': level, 'parent_id': parent_id})

print lst
宣传栏