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

Python按值排序字典时触发'str与int不可比较'TypeError如何解决

问题原因

你的报错是Python 3的类型比较限制导致的:你字典bad_functions的取值同时包含整数类型的并发数、字符串类型的"unreserved",Python 3不支持直接对字符串和整数做大小比较,因此直接用item[1]作为排序key时会触发类型冲突。

解决方案

sorted函数对元组做比较时会优先对比第一个元素,仅第一个元素相等时才会对比第二个元素,通过调整排序key返回二元组的方式,可以先区分值的类型再做比较,避免跨类型对比。根据你的排序需求可以选择以下两种方案:

方案1:所有unreserved条目排在最前,后续按并发数从小到大排序

bad_functions_sorted = {k: v for k, v in sorted(bad_functions.items(), key=lambda item: (0, item[1]) if isinstance(item[1], str) else (1, item[1]))}

方案2:所有unreserved条目排在最后,前面按并发数从小到大排序

bad_functions_sorted = {k: v for k, v in sorted(bad_functions.items(), key=lambda item: (1, item[1]) if isinstance(item[1], str) else (0, item[1]))}
兼容性提示

如果你的Python版本低于3.7,原生字典不保证保留插入顺序,需要使用OrderedDict存储排序后的结果:

from collections import OrderedDict
bad_functions_sorted = OrderedDict(sorted(bad_functions.items(), key=lambda item: (0, item[1]) if isinstance(item[1], str) else (1, item[1])))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:36:01