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

Python函数中stock.get(merch,0)的,0作用?及代码TypeError报错排查

关于Python字典get方法中,0的作用及报错分析

Hey there, let's break this down clearly for you:

一、stock.get(merch, 0)中,0的作用

Python字典的get()方法用于获取指定键对应的值,它包含两个参数:

  • 第一个参数是要查找的目标键(这里是merch)
  • 第二个参数是可选默认值,当目标键不存在于字典中时,就会返回这个默认值

所以stock.get(merch, 0)的具体逻辑是:

  • 如果merch是stock字典里的键,就返回它对应的库存数量(比如stock.get('leggos',0)会返回100)
  • 如果merch不在stock里,就返回0,而不是Python默认的None

这个,0的核心作用是确保返回值始终是整数类型,这样后续和整数n做大小比较时不会触发类型错误。

二、报错TypeError: unorderable types: NoneType() >= int()的原因

你提供的代码里明明写了,0,理论上不会触发这个报错,但既然出现了这个错误,大概率是你实际提交到Codewars的代码中漏掉了第二个参数0,也就是写成了stock.get(merch)。

当你只写stock.get(merch)时:

  • 如果merch不在stock字典里,方法会返回None(Python中表示空值的类型)
  • 代码执行None >= n时,因为NoneType和int是完全不同的类型,Python3不允许直接对它们做大小比较,就会抛出这个TypeError

而加上,0之后,不管merch是否存在,返回的都是整数(库存数或0),和n(整数)做>=比较就完全合法了。

举个简单的验证例子:

stock = {'football': 4}
# 没有默认值的情况
print(stock.get('toy'))  # 输出 None
# 有默认值0的情况
print(stock.get('toy', 0))  # 输出 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:14:40