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

Python基于指定key递归修剪树结构 代码运行异常求助

决策树剪枝代码问题排查

原代码存在的核心问题

  • 语法错误:函数定义行末尾缺少冒号:,运行时会直接报错
  • 逻辑完全错位:
    当子节点不在剪枝列表时,你直接把原节点追加到新树,没有递归处理这个子节点的下层节点,深层需要剪枝的节点完全不会被处理
    当子节点在剪枝列表时,你调用了递归函数但完全没有使用返回结果,相当于做了无用计算,剪枝规则没有生效
  • 属性丢失:新创建的Tree实例只处理了children属性,没有复制原节点的key、value,这就是你遇到空节点的直接原因
  • 缺少根节点判断:没有处理当前传入的节点本身就需要剪枝的场景

修正后的代码

def prune_tree(tree, keys_to_prune):
    # 先判断当前节点本身是否需要剪枝,需要的话直接返回None,整支丢弃
    if tree.key in keys_to_prune:
        return None
    # 新建节点,复制原节点的key和value,避免空节点
    new_tree = Tree()
    new_tree.key = tree.key
    new_tree.value = tree.value
    # 遍历所有子节点,递归处理后再追加到新树
    for child in tree.children:
        processed_child = prune_tree(child, keys_to_prune)
        if processed_child is not None:
            new_tree.children.append(processed_child)
    return new_tree

使用注意

如果调用剪枝函数的根节点本身可能命中剪枝列表,接收返回值的时候要做好None判断,避免属性访问报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:06:04