Python 访问/修改嵌套字典中的元素

Python 访问/修改嵌套字典中的元素,python,dictionary,recursion,decision-tree,pruning,Python,Dictionary,Recursion,Decision Tree,Pruning,我试图对决策树应用减少错误后修剪,该决策树是用Python中的嵌套字典实现的。这是一个树的示例,当与数据拟合时,限制为最多三层(尽管可能更深) 本质上,我有属性'isLeaf'、'attr'、'val'和'mode',以及包含在进一步嵌套级别中的左、右子级。叶子节点不会分裂,因此缺少“attr”和“val”键。与减少错误修剪一样,我的目标是从底部(最深层)连续删除叶子,并每次检查错误;如果它相当于/优于整棵树,我将去掉叶子。我了解如何访问/打印叶子正上方的终端节点(需要在每次迭代中转换为叶子)。

我试图对决策树应用减少错误后修剪,该决策树是用Python中的嵌套字典实现的。这是一个树的示例,当与数据拟合时,限制为最多三层(尽管可能更深)

本质上,我有属性'isLeaf'、'attr'、'val'和'mode',以及包含在进一步嵌套级别中的左、右子级。叶子节点不会分裂,因此缺少“attr”和“val”键。与减少错误修剪一样,我的目标是从底部(最深层)连续删除叶子,并每次检查错误;如果它相当于/优于整棵树,我将去掉叶子。我了解如何访问/打印叶子正上方的终端节点(需要在每次迭代中转换为叶子)。这可能是一个简单的递归,如下所示:

def get_leaf(tree):
    node=tree
    if node['right']['isLeaf'] =='yes' or node['left']['isLeaf'] =='yes':
        print(node)
    else:
        if node['right']['isLeaf'] != 'yes':
            get_leaf(node['right'])
        if node['left']['isLeaf'] != 'yes':
            get_leaf(node['left'])
但是,我不知道如何通过删除树叶来进行修改(并在每次迭代后更改整个树),以反映较小的树。这一步对于拟合验证数据和测试是否需要修剪是必要的。
如果您对此有任何意见,我们将不胜感激。

您已经阅读了文档了吗?你看过文件了吗?
def get_leaf(tree):
    node=tree
    if node['right']['isLeaf'] =='yes' or node['left']['isLeaf'] =='yes':
        print(node)
    else:
        if node['right']['isLeaf'] != 'yes':
            get_leaf(node['right'])
        if node['left']['isLeaf'] != 'yes':
            get_leaf(node['left'])