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

字典列表中Cost字段max计算结果异常的技术求助

问题:字典列表中使用max()计算最高Cost值得到错误结果

嘿,这个问题我之前也踩过坑!你得到错误结果的核心原因是:你的Cost值是字符串类型,而非数值类型。

当你用lambda x:x["Cost"]作为max()的排序key时,Python会按照字符串的字典序来比较大小,而不是我们直觉里的数值大小。举个例子,字符串 "910" 和 "2200" 比较时,第一个字符'9'的ASCII码比'2'大,所以Python会认为"910"比"2200"更大——这就是为什么你得到了错误的最大值910。

解决办法

有两种简单的修复方式,看你的需求选就行:

1. 计算时临时转换类型

直接在lambda表达式里把Cost转换成整数(如果有小数成本就用float()):

maxPricedItem = max(t, key=lambda x: int(x["Cost"]))
print(maxPricedItem['Cost'])  # 输出:2200

2. 提前统一转换类型

如果后续还会频繁用到数值类型的Cost,建议先遍历列表把所有Cost字段转成整数:

for hotel in t:
    hotel["Cost"] = int(hotel["Cost"])

# 之后再用原来的代码就正常了
maxPricedItem = max(t, key=lambda x:x["Cost"])
print(maxPricedItem['Cost'])  # 输出:2200

用上面的方法,就能正确找到列表中Cost最高的酒店(也就是Sr. No.为987、Cost为2200的那一项)啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 06:57:50