Python 中如何删除字典里的某个键?

删除字典的键:del d['key'] 直接删除(键不存在报错);d.pop('key', 默认值) 删除并返回值更安全。本文对比两种方法及批量删除。

最佳实践
Python 中如何删除字典里的某个键?封面

两种方式:del d['key'] 直接删除(键不存在抛 KeyError);d.pop('key', None) 删除并返回对应的值,键不存在时返回默认值而不报错——不确定键是否存在时用 pop 更安全。

del 语句

d = {'a': 1, 'b': 2, 'c': 3}
del d['b']
print(d)  # {'a': 1, 'c': 3}

键不存在时抛 KeyError,使用前可先判断 if 'b' in d:

pop() 方法

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

value = d.pop('b')        # 删除并返回 2
value = d.pop('x', None)  # 键不存在,返回 None,不报错

批量删除多个键

keys_to_remove = ['a', 'b']
for k in keys_to_remove:
    d.pop(k, None)

# 或用字典推导式重建(保留想要的)
d = {k: v for k, v in d.items() if k not in keys_to_remove}

注意事项

遍历时删除会报错

# 错误:RuntimeError: dictionary changed size during iteration
for k in d:
    if d[k] < 0:
        del d[k]

# 正确:遍历键的副本
for k in list(d):
    if d[k] < 0:
        del d[k]

常见问题(FAQ)

Q:del 和 pop 性能有差别吗?
A:都是 O(1)。区别只在 pop 返回值、支持默认值。

Q:能按键的某个模式批量删吗?
A:d = {k: v for k, v in d.items() if not k.startswith('tmp_')},字典推导式最简洁。

Q:删除不存在的键但不想写默认值?
A:d.pop('key', None) 就行;或 if 'key' in d: del d['key']

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台