You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Pandas DataFrame两列生成进程父子关系树结构

解决进程父子关系树形打印问题

步骤1:数据预处理与构建父子映射

首先清理子进程列表中的冗余空格,再构建父进程到子进程的映射字典:

list1_a = ['process1','process2','process1','process1','process5','process14','process14','process16','process16','process14']
list1_b = ['process2','process3','process4','process5','process6 ','process15','process16','process17','process18','process19']

# 清理子进程字符串中的空格
list1_b = [p.strip() for p in list1_b]

# 构建父->子的映射字典
parent_child = {}
for parent, child in zip(list1_a, list1_b):
    if parent not in parent_child:
        parent_child[parent] = []
    parent_child[parent].append(child)

步骤2:确定树的根节点

根节点是仅出现在父进程列表、从未出现在子进程列表的进程,去重后得到:

all_children = set(list1_b)
# 筛选根节点并去重排序
roots = sorted(set(p for p in list1_a if p not in all_children))

步骤3:递归打印树形结构

通过递归函数,根据节点层级添加缩进,实现目标格式的树形输出:

def print_tree(node, level=0):
    # 按层级生成缩进,每深一层增加4个空格
    indent = '    ' * level
    print(f"{indent}|_{node}")
    # 递归打印子节点
    if node in parent_child:
        for child in parent_child[node]:
            print_tree(child, level + 1)

# 遍历所有根节点打印完整树
for root in roots:
    print_tree(root)
    print()  # 根节点之间空行分隔

运行结果

执行代码后会输出与目标一致的树形结构:

|_process1
    |_process2
        |_process3
    |_process4
    |_process5
        |_process6

|_process14
    |_process15
    |_process16
        |_process17
        |_process18
    |_process19

内容的提问来源于stack exchange,提问作者FarahR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:00:12