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

DeepDiff使用include_paths时非包含路径影响对比结果问题

DeepDiff指定include_paths仍出现差异的原因

你遇到的问题核心在于DeepDiff默认会优先检测字典的键数量差异,再结合include_paths的过滤逻辑,导致两种场景出现不同结果:

具体原因拆解

  1. 第一个案例(左右字典键数量不同)
    左字典有3个键,右字典只有2个键,DeepDiff默认会将键数量不一致的情况视为结构差异,直接报告新增/缺失的字典项(比如右边新增的uid、左边缺失的code和noneCode)。这种结构层面的检测不受include_paths限制——因为include_paths仅控制指定路径的值对比,无法覆盖默认的字典结构完整性检查。

  2. 第二个案例(左右字典键数量相同)
    左右字典都有2个键,此时DeepDiff不会触发键数量差异的检测,转而遵循include_paths的规则,只对比root['name']对应的值。因为两边name的值完全一致,所以返回空字典。

解决方案

如果你希望完全忽略非指定路径的所有差异(包括键数量、新增/缺失键),可以添加ignore_missing_keys=True参数,强制DeepDiff只关注include_paths指定的路径:

from deepdiff import DeepDiff

DeepDiff(
    {'name': 'Testname', 'code': 'bla', 'noneCode': 'blu'},
    {'uid': '12345', 'name': 'Testname'},
    include_paths="root['name']",
    ignore_missing_keys=True  # 新增此参数
)  # 此时返回{},符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 10:27:42