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

Python中使用DeepDiff比较int与string时如何完全忽略类型差异?

解决DeepDiff忽略数值与字符串类型差异的问题

首先得明确:ignore_type_in_groups参数的作用不是直接忽略单个值的类型差异,它是用来让集合、列表这类容器结构里的不同类型元素(比如int和str)被归为同一组进行匹配对比,而非直接消除值本身的类型差异。

要实现完全忽略数值和字符串的类型差异,你提到的number_to_string_func其实就是最直接的原生方案,只需要自定义一个转换函数,把字符串尝试转成对应数值(或者反过来),让两者的值能被判定为相等:

from deepdiff import DeepDiff

def convert_str_to_num(value):
    try:
        # 先尝试转整数,不行转浮点数,都失败就返回原内容
        return int(value) if value.isdigit() else float(value)
    except (ValueError, TypeError):
        return value

# 传入自定义转换函数
diff_result = DeepDiff({"key": 0}, {"key": "0"}, number_to_string_func=convert_str_to_num)
print(diff_result)  # 输出空字典,说明无差异

如果你的场景里还需要处理其他类型的转换(比如bool和str),可以扩展这个转换函数的逻辑。另外,也可以用custom_operators自定义对比规则,但number_to_string_func对于数值和字符串的场景更简洁直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:52:06