如何为字典深度计算函数添加非字典输入判断条件?
解决字典深度计算及初始输入类型检查问题
要实现需求,核心是区分初始输入的类型检查和递归过程中的深度计算——只在第一次调用函数时验证输入是否为字典,递归内部遇到非字典值则继续按原有逻辑处理,不返回错误字符串。
修改后的代码
def dict_depth(d): # 仅在初始调用时检查输入类型 if not isinstance(d, dict): return "this is not a dict" # 内部递归函数专门处理深度计算 def _calculate_depth(item): if isinstance(item, dict): if not item: return 1 return 1 + max(_calculate_depth(value) for value in item.values()) else: return -1 return _calculate_depth(d)
代码说明
- 初始输入检查:主函数首先判断传入的
d是否为字典,若不是直接返回指定字符串。 - 内部递归逻辑:
_calculate_depth函数保留原有递归计算深度的逻辑——遇到字典则继续递归,遇到非字典值返回-1,通过max和累加计算最大嵌套深度,最终结果完全匹配给出的示例。
测试验证
- 非字典输入:
dict_depth(123)→ 返回"this is not a dict" - 单层字典:
dict_depth({1:"a",2:"b"})→ 返回0 - 一层嵌套:
dict_depth({1: {1:"a",2:"b"},2:"b"})→ 返回1 - 两层嵌套:
dict_depth({1: {1:"a",2:"b"},2: {1:{1:"a",2:"b"},2:"b"}})→ 返回2 - 空字典:
dict_depth({})→ 返回1(保留原有代码的空字典逻辑)
内容的提问来源于stack exchange,提问作者Ori Hemo
相关产品推荐
相关产品推荐

