dictutils.ops.rollup_treeΒΆ

dictutils.ops.rollup_tree(tree, reducers)[source]ΒΆ

Roll up aggregate values from leaves to parents in a tree structure.

Parameters:
Return type:

dict[str, Any]

Returns:

Tree with rolled-up values

Example

>>> import json
>>> tree = {
...     "departments": {
...         "engineering": {
...             "budget": 100,
...             "teams": {
...                 "frontend": {"budget": 40},
...                 "backend": {"budget": 60}
...             }
...         }
...     }
... }
>>> result = rollup_tree(tree, {"budget": lambda a, b: (a or 0) + (b or 0)})
>>> print(json.dumps(result, indent=4))
{
    "departments": {
        "engineering": {
            "budget": 200,
            "teams": {
                "frontend": {
                    "budget": 40
                },
                "backend": {
                    "budget": 60
                }
            }
        }
    }
}