如何编写单个函数计算含列表嵌套字典各顶层值的列表总长度
解决方案
可以通过增加一个标记是否为顶层调用的布尔参数,将两个函数的逻辑合并到同一个函数中,代码如下:
def TreeSum(tree, is_top=True): calc = [len(v) if isinstance(v, list) else TreeSum(v, is_top=False) for v in tree.values()] return calc if is_top else sum(calc)
验证效果
- 调用
TreeSum(data)输出为[10, 17],符合预期 - 调用
TreeSum(data[1][1])输出为[2, 2, 4, 7],符合预期
实现逻辑
函数默认is_top=True代表是顶层调用,此时会将每个顶层值的计算结果组装为列表返回;递归处理嵌套字典时传入is_top=False,此时会直接返回当前子树内所有列表的长度总和,无需再返回列表,刚好覆盖了原有SubTreeSum的功能。
内容的提问来源于stack exchange,提问作者Aoaoaoappa
相关产品推荐
相关产品推荐

