首页 > 编程语言 >python list 转 字典,父节点包含子节点

python list 转 字典,父节点包含子节点

时间:2023-05-31 22:31:32浏览次数:92  
标签:python list id dict result child data 节点

list 转 字典,父节点包含子节点

class Data:
    def __init__(self, id, p_id, name):
        self.id = id
        self.p_id = p_id
        self.name = name
        
def convert_to_dict(data_list):
    result_dict = {}
    for data in data_list:
        if data.p_id not in result_dict:
            result_dict[data.p_id] = [data.id]
        else:
            result_dict[data.p_id].append(data.id)
        child_dict = convert_to_dict(filter(lambda x: x.id == data.id, data_list))
        if len(child_dict) > 0:
            if data.p_id not in result_dict[data.id]:
                result_dict[data.p_id] = [data.id]
            else:
                result_dict[data.p_id].append(data.id)
            for child_key, child_value in child_dict.items():
                if child_key not in result_dict[data.p_id]:
                    result_dict[data.p_id].append(child_key)
                elif result_dict[data.p_id][-1] != child_key:
                    result_dict[data.p_id].append(child_key)
    return result_dict
    
# 示例用法
data_list = [Data(1, 2, 'Alice'), Data(2, 3, 'Bob'), Data(3, 4, 'Charlie')]
result_dict = convert_to_dict(data_list)
print(result_dict)

标签:python,list,id,dict,result,child,data,节点
From: https://blog.51cto.com/u_16109758/6390389

相关文章

  • python字符串操作
    python字符串操作字符串定义可用单引号、双引号、三引号来定义字符串#eg:var1='HelloWorld!'var1="HelloWorld!"var1="""HelloWorld!"""字符串相关的一些操作1.input()name=input("请输入你的名字:")#输入张三print(name)#张三print(type(n......
  • python离线下载安装第三方包
    下载离线安装包#dpackages选项表示将多个文件保存在packages文件夹下例:下载requestspipdownloadrequests-dpackages-ihttps://pypi.tuna.tsinghua.edu.cn/simple安装离线包#--find-links=路径选项来指定寻找依赖的路径,--no-index选项表示不要检查PyPI,以requests包......
  • python基础(变量、数据类型)
    python简介Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。python变量什么是变量:在python中,变量其实严格意义上称作为“名......
  • python
    pythonnumber类型转换 pythonmath模块、cmath模块python数学模块 python随机数函数 python三角函数 python数字python转义字符 python字符串运算 python字符串格式化符号    ......
  • Python潮流周刊#4:Python 2023 语言峰会
    你好,我是猫哥。这里记录每周值得分享的Python及通用技术内容,本期是特别加更版,聚焦于Python官方2023年语言峰会的系列博客。博客原文:https://pythoncat.top/posts/2023-05-31-weekly4每年在PyConUS开始之前,Python核心开发者、维护者和特邀嘉宾都会聚在一起参加Python......
  • Python连接es笔记四之创建和删除操作
    本文首发于公众号:Hunter后端原文链接:Python连接es笔记四之创建和删除操作这一篇笔记介绍一下索引和数据的创建和删除。其实对于索引来说,如果可以接触到kibana的话,可以很方便的在界面进行操作,这里简单介绍一下如何使用代码来操作索引的创建和删除。索引的创建和删除操作使......
  • 重学c#系列——DiagnosticListener [三十五]
    前言简单介绍一下DiagnosticListener,一个比较常见的事件通知模型,可以说是事件发布订阅模型,常用于监控。正文直接编写代码:usingSystem.Diagnostics;publicclassprogram{publicstaticvoidMain(string[]args){//创建一个DiagnosticListener实例......
  • CMakeLists --- install和uninstall
    install假设生成了以下几个文件:静态库target1,动态库target2,可执行文件target3 1.安装文件至指定位置#只安装静态库install(TARGETStarget1LIBRARYDESTINATIONlib)#安装静态库,动态库,可执行文件install(TARGETStarget1target2target3LIBRARYDESTINATIONli......
  • Python中的join()函数和split()函数的用法
    题目:CFUltra-FastMathematician 题意:给两个长度相等的0,1字符串,在相同的位置的两个字符不同就输出1,否则输出0.比如:10101000100101就输出:1110001代码:print''.join("10"[i==j]fori,jinzip(raw_input(),raw_input()))join()函数的用法就是把一个list中所有的串按照你定义的分隔......
  • Python基础语法
    Python中查看变量对应的地址用函数id(var)。 注意在Python中与在C语言中有一些不同的地方。比如:a = 10,在Python中是这样的,数值10在内存中开辟一块空间来存放数据10,然后用a去引用这个10,所以这里a相当于一个标签,如果a被重新赋值了,相当于a又指向了另一个地址,比如a = 1000,那么a指......