Python 中如何检查字典里是否存在某个键?

Python 检查字典键是否存在用 in 关键字:'key' in d。get() 方法带默认值也是常用方式。本文对比各种检查方法。

最佳实践
Python 中如何检查字典里是否存在某个键?封面

最 Pythonic 的写法:'key' in my_dict。需要顺便取值时用 my_dict.get('key', 默认值)

in 关键字(推荐)

my_dict = {'a': 1, 'b': 2, 'c': 3}

if 'a' in my_dict:
    print("键存在")

in 对字典检查的是(不是值),时间复杂度 O(1)。

get() 顺带取值

value = my_dict.get('a')        # 键不存在返回 None
value = my_dict.get('d', 0)     # 键不存在返回默认值 0

setdefault():不存在则写入

# 键存在返回现有值,不存在则写入默认值并返回
my_dict.setdefault('d', 4)   # d 不存在,写入 {'d': 4}

常用于"确保键存在"的初始化场景。

注意:区分"不存在"和"值为 None"

d = {'a': None}

d.get('a') is None      # True——但键是存在的!
'a' in d                # True

get() 返回 None 时分不清是"键不存在"还是"值就是 None"。要严格区分用 in 或带哨兵值:d.get('a', sentinel)

常见问题(FAQ)

Q:检查值是否存在?
A:value in d.values(),复杂度 O(n)。

Q:检查嵌套字典的键?
A:逐层判断 if 'a' in d and 'b' in d['a'];或 try/except KeyError;或用 dict.get 链式 d.get('a', {}).get('b')

Q:has_key() 方法呢?
A:Python 2 的旧方法,Python 3 已移除,统一用 in

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台