You need to enable JavaScript to run this app. Flask报TypeError: '<'不支持int与str实例比较问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Flask报TypeError: '<'不支持int与str实例比较问题求助

Flask Session序列化时报int和str无法比较错误排查

根因定位

这个报错是Flask默认JSON序列化逻辑触发的,和你自己写的业务代码无关:

  • 你代码中的__incomes/__expenses/__savings/__investments字典同时存在两类键:一类是固定字符串键"summary",另一类是item.get("id")生成的整数类型键
  • Flask默认开启了JSON_SORT_KEYS = True配置,JSON编码器序列化字典时会自动对所有键做排序来保证输出结果稳定。当字典同时存在整数和字符串类型的键时,排序过程中会触发跨类型比较,直接抛出你遇到的TypeError: '<' not supported between instances of 'int' and 'str'错误。

解决方案

方案1(最推荐):调整字典结构

把汇总字段和业务条目分层存储,避免不同类型的键出现在同一层级:

# 初始化时调整结构,比如__incomes的初始值改成
self.__incomes = {
    "summary": 0.0,
    "items": {}
}
# 对应业务代码修改为
item["incomes"] = float(item.get("incomes"))
self.__incomes["items"][item.get("id")] = item
self.__incomes["summary"] += item.get("incomes")

该方案不改动框架默认配置,同时数据结构更清晰,后续维护成本最低。

方案2:统一键的类型

把用作键的id统一转为字符串类型,避免跨类型比较:

# 把所有赋值的键都转成字符串
self.__incomes[str(item.get("id"))] = item

该方案改动量小,不需要调整原有数据结构。

方案3:关闭JSON自动排序

在Flask实例配置中关闭键排序逻辑:

app.config['JSON_SORT_KEYS'] = False

该方案改动量最小,但会导致序列化输出的JSON键顺序不稳定,调试和对接前端时可能出现额外问题,不推荐使用。


内容的提问来源于stack exchange,提问作者onii-sama

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 23:36:10