Python 中如何删除字典里的元素?

删除 Python 字典元素的三种方法:del 语句、pop() 方法(可带默认值避免 KeyError)、popitem() 删除并返回最后插入的项。本文对比三者用法与区别。

最佳实践
Python 中如何删除字典里的元素?封面

三种方式:del d['key'] 直接删除(键不存在会报 KeyError);d.pop('key', None) 删除并返回值,可设默认值避免报错;d.popitem() 删除并返回最后插入的键值对。

del 语句

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

简洁直接,但键不存在时抛 KeyError。不确定键是否存在时先判断 if 'b' in my_dict

pop() 方法

value = my_dict.pop('b', None)
print(value)    # 2
print(my_dict)  # {'a': 1, 'c': 3}
  • 返回被删的值,删除的同时还能拿到数据;
  • 第二个参数是默认值,键不存在时返回它而不抛异常——这是最安全的删法。

popitem() 方法

item = my_dict.popitem()
print(item)     # ('c', 3),Python 3.7+ 删除最后插入的项

不需要指定键,适合"弹出一个任意/最新项"的场景。字典为空时抛 KeyError

批量删除

for key in ['a', 'b']:
    my_dict.pop(key, None)

注意:不要边遍历字典边删除(会抛 RuntimeError: dictionary changed size during iteration),应先收集要删的键再循环删除。

常见问题(FAQ)

Q:del 和 pop 性能有差别吗?
A:都是 O(1),差别只在 pop 多一个返回值和默认值特性,按语义选即可。

Q:如何按值删除?
A:字典按键索引,按值删除需要先找到对应的键:keys = [k for k, v in d.items() if v == target],再逐个 pop。

Q:清空整个字典?
A:d.clear() 原地清空;d = {} 是重新绑定新对象,其他引用旧字典的变量不受影响,语义不同。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台