[英]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.