You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为字典深度计算函数添加非字典输入判断条件?

解决字典深度计算及初始输入类型检查问题

要实现需求,核心是区分初始输入的类型检查和递归过程中的深度计算——只在第一次调用函数时验证输入是否为字典,递归内部遇到非字典值则继续按原有逻辑处理,不返回错误字符串。

修改后的代码

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)

代码说明

  1. 初始输入检查:主函数首先判断传入的d是否为字典,若不是直接返回指定字符串。
  2. 内部递归逻辑:_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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:37:01