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

如何用类似dict.get()的方法在字典值为None时返回指定值?

当然有办法解决这个问题!你碰到的刚好是dict.get()的一个小局限——它只在键不存在时返回默认值,但如果键存在但值是None,就会直接返回None。要实现你要的逻辑,一行代码就能搞定,这里给你几个方案:

方案1:用海象运算符(Python 3.8+,推荐)

这是最简洁高效的写法,只需要一次字典查询,避免重复操作:

my_dict = {"my_key": None}
my_variable = val if (val := my_dict.get("my_key")) is not None else "Not None"

这里的val := my_dict.get("my_key")会先把字典查询的结果赋值给变量val,紧接着判断它是否为None:如果不是,就用val本身;如果是(不管是键不存在还是值就是None),就返回你的默认值"Not None"。

方案2:兼容旧Python版本的写法

如果你的Python版本低于3.8,没法用海象运算符,可以用这个写法(虽然会查询两次字典,但对于绝大多数场景来说性能影响可以忽略):

my_variable = my_dict.get("my_key") if my_dict.get("my_key") is not None else "Not None"

或者更严谨一点,先判断键是否存在再取值,减少一次字典查询:

my_variable = my_dict["my_key"] if "my_key" in my_dict and my_dict["my_key"] is not None else "Not None"

注意「假值陷阱」

如果你看到有人推荐my_variable = my_dict.get("my_key") or "Not None",一定要谨慎!这种写法会把所有假值(比如0、空字符串""、布尔值False)都替换成默认值。只有当你确定字典里的有效取值不会是这些假值时,这个写法才适用——否则会误替换掉你需要的有效值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:57:34