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

如何实现递归校验一个字典是否为另一个字典的子集?

递归检查字典是否为另一个字典的子集(内置类型场景)

我之前碰到过一模一样的需求:要递归验证一个字典是否是另一个字典的子集,而且两个字典里的元素全是Python内置类型。之前看到过讨论类似问题的帖子,但里面的所有答案都没法完全匹配我的需求,所以我自己写了一个目前运行正常的递归函数,分享给大家:

def is_subset_dict(subset, superset):
    # 处理非字典的基础类型直接比较
    if not isinstance(subset, dict) or not isinstance(superset, dict):
        return subset == superset
    
    # 遍历子集的每一个键值对
    for key, sub_val in subset.items():
        # 超集里没有这个键,直接不满足子集条件
        if key not in superset:
            return False
        # 递归检查嵌套的字典结构
        if not is_subset_dict(sub_val, superset[key]):
            return False
    
    # 所有键值对都匹配,返回True
    return True

函数逻辑说明

  • 先判断传入的参数是否为字典:如果是基础类型(比如int、str、list、tuple这类),直接比较值是否相等
  • 如果是字典,先检查子集的每个键是否都存在于超集中
  • 对每个键对应的 value,递归调用函数,确保嵌套的多层字典也能被正确验证

目前这个函数对于常规的内置类型嵌套场景都能正常工作,不过我还在优化边缘情况的处理(比如空字典、值为None的场景),但基础的递归子集验证需求已经完全能覆盖了。

内容的提问来源于stack exchange,提问作者BPL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:12:15