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

如何更Pythonic地比较两个嵌套字典的键?

嵌套字典键结构比对的Pythonic实现

不需要修改字典值,用递归比对是更简洁高效的方案,核心思路是逐层验证键集合,再递归处理子结构:

简洁递归实现

def compare_dict_keys(a, b):
    if isinstance(a, dict) and isinstance(b, dict):
        # 先比对当前层级的键集合,再递归验证每个子项
        return a.keys() == b.keys() and all(compare_dict_keys(a[k], b[k]) for k in a)
    # 非字典节点只需类型一致(值类型无键需比对)
    return type(a) == type(b)

用法示例

假设你有实际API响应和预期结构:

actual_api_response = {
    "data": {"id": 456, "status": True, "label": "dynamic_val"},
    "pagination": {"current": 3, "max_pages": 20}
}

expected_structure = {
    "data": {"id": 0, "status": False, "label": ""},
    "pagination": {"current": 0, "max_pages": 0}
}

# 验证结构是否一致
print(compare_dict_keys(actual_api_response, expected_structure))  # 输出 True

为什么这更Pythonic?

  • 无副作用:不会修改原始字典,避免影响后续逻辑
  • 递归自然适配嵌套结构:不管字典嵌套多少层,都能自动处理
  • 代码简洁可读:核心逻辑一行搞定,符合Python的简洁风格
  • 动态键兼容:自动适配任意动态生成的键,不需要提前枚举

如果需要定位具体的不匹配位置,可以稍作修改让函数返回差异信息,但基础版本已经能满足你API结构校验的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:35:22