如何用类似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
相关产品推荐
相关产品推荐

