繁体   English   中英

如何递归总结python中嵌套树字典的叶子节点?

[英]How to recursively sum-up the leaves node of a nested tree dictionary in python?

如下例所示,我想递归地找到叶子节点,然后计算这些叶子节点的总和。 如果总和大于某个阈值,则删除那些叶子节点,否则忽略它并继续前进到下一组叶子节点。

tree= {'Age': {'> 55': 0.4, '< 18': {'Income': {'high': 0, 'low': 0.2}}, 
               '18-35': 0.25, '36-55': {'Marital_Status': {'single': {'Income': 
               {'high': 0, 'low': 0.1}}, 'married': 0.05}}}}

例如,第一个收入节点有两个叶子 (0,0.2),总和为 0.2。 我想删除这些叶子节点,因为总和大于阈值另一个例子,第二个收入节点有两个叶子 (0, 0.1),总和为 0.1,我想忽略它,因为总和小于阈值

如果我正确理解了这个问题,那么您有一些嵌套字典,其结构有些未定义,但是在某些深度,这些字典树可能包含Income键,这些键的值是一个字典,其中包含数字作为您想要查找并求和的值那些。 在您的示例中, '18-35': 0.25也将是一片叶子,但您对这些不感兴趣。 正确的?

在这种情况下:

def recurse_through_tree(tree):
    for (key, value) in tree.items():
        if key == "Income":
            assert isinstance(value, dict)
            summed = sum(value.values())
            # handle your threshold condition. For debugging print("sum="+str(summed))
        elif isinstance(value, dict):
            recurse_through_tree(value)

可能会让你开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM