通过数组元素的父子关系形成一个字典类型的树列表

# coding=utf-8
‘‘‘
通过父子key关系形成一个字典类型的列表
‘‘‘
deparetment = [{‘id‘: ‘03F50D0FE48A4C77896411D007C72A5B‘, ‘name‘: ‘2级部门‘, ‘p_id‘: ‘8F0095616A17484DAD2C17925C04B78E‘},
               {‘id‘: ‘07A592FE111E4B338AC967531AB99A7E‘, ‘name‘: ‘4级部门‘, ‘p_id‘: ‘A54DF3E5EBC14254ACF65BC20C2BF4B6‘},
               {‘id‘: ‘1F211E1C1D504EE0A1224F0757C67E8F‘, ‘name‘: ‘2级部门2‘, ‘p_id‘: ‘4D9190D6132441D19F9DF4DA19948AFD‘},
               {‘id‘: ‘3E449618073044819C1C729A7447DE13‘, ‘name‘: ‘5级部门‘, ‘p_id‘: ‘07A592FE111E4B338AC967531AB99A7E‘},
               {‘id‘: ‘4D9190D6132441D19F9DF4DA19948AFD‘, ‘name‘: ‘3333‘, ‘p_id‘: ‘-1‘},
               {‘id‘: ‘8F0095616A17484DAD2C17925C04B78E‘, ‘name‘: ‘111‘, ‘p_id‘: ‘-1‘},
               {‘id‘: ‘A54DF3E5EBC14254ACF65BC20C2BF4B6‘, ‘name‘: ‘3级部门‘, ‘p_id‘: ‘03F50D0FE48A4C77896411D007C72A5B‘},
               {‘id‘: ‘E11306E5EABB477C9098886CF7F63731‘, ‘name‘: ‘2222‘, ‘p_id‘: ‘-1‘}]

# 获取部门树
def get_all_department_tree(dp):
    top = []
     # 找出顶级部门,顶级部门p_id=-1
    for d in dp:
        info = {}
        if d[‘p_id‘] == ‘-1‘:
            info["value"] = d["id"]
            info["label"] = d["name"]
            top.append(info)
   
    #从每个顶级部门递归查找子部门
    for c in top:
        set_children(c, dp)
    return top

#递归查找部门
def set_children(c, dp):
    c["children"] = []
    n = 0
    for d in dp:
        info = {}
        if c["value"] == d["p_id"]:
            n = n + 1
            info["value"] = d["id"]
            info["label"] = d["name"]
            c["children"].append(info)
    if n:
        for cc in c["children"]:
            return set_children(cc, dp)  # 递归在下级继续查找
    else:
        c.pop(‘children‘)

print get_all_department_tree(deparetment)

原文地址:https://www.cnblogs.com/leomo/p/9851744.html

时间: 2024-11-08 22:40:19

通过数组元素的父子关系形成一个字典类型的树列表的相关文章

js通用方法获取元素,节点父子关系查找

/* *通用方式来获取元素 * 1.通过id来获取元素document.getElementById('属性名') * 2.通过便签名来获取元素document.getElementsByTagName('属性名');得到的是一个数组 * 3.通过class属性来获取元素有兼容性问题document.getElementsByClassName('class属性名');得到是一个数组 * 4.通过name属性来获取元素存在兼容性问题document.getElementsByName('name

将数组元素从指定索引后移一个位置

1 /* 2 ******************************************************************************* 3 时间 :2014年9月20日 21:55:25 4 程序名:MoveArr.c 5 By :xxNote 6 作用 :把一个整数数组从指定的索引k开始向后移动1个单位,最后一个元素扔掉,索引为k的元素改成m 7 *******************************************************

【C语言】12-指向一维数组元素的指针

一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p = &a[0]; 9 10 // 修改所指向元素的值 11 *p = 10; 12 13 // 打印第一个元素的值 14 printf("a[0] = %d", a[0]); 输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的. 由于数组名代表

学习笔记之12-指向一维数组元素的指针

一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p = &a[0]; 9 10 // 修改所指向元素的值 11 *p = 10; 12 13 // 打印第一个元素的值 14 printf("a[0] = %d", a[0]); 输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的. 由于数组名代表

【C语言】指向一维数组元素的指针

本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 回到顶部 一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8

【C语言】-指向一维数组元素的指针

本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 回到顶部 一.用指针指向一维数组的

C语言 12-指向一维数组元素的指针

本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略. 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量.数组及其数组元素都占有存储空间,都有自己的地址,因此指针变量可以指向整个数组,也可以指向数组元素. 一.用指针指向一维数组的元素 1

1008. 数组元素循环右移问题 (20)

1008. 数组元素循环右移问题 (20) 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN-1 A0 A1--AN-M-1)(最后M个数循环移至最前面的M个位置).如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式:每个输入包含一个测试用例,第1行输入N ( 1<=N<=100).M(M>=0):第2行输入N个整数,之间用空格

PAT自测_打印沙漏、素数对猜想、数组元素循环右移、数字加倍重排、机器洗牌

00-自测1. 打印沙漏(20) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入格式: 输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔. 输出格式: 首先