Skip to content

Python字典:移除键值对的几种方法

字典是 Python 中非常重要的数据结构,它以键值对的形式存储数据。有时候我们需要从字典中移除一些不需要的键值对。本文将介绍几种常用的方法,帮助你轻松掌握字典元素的删除操作。

1. 使用 del 关键字

del 关键字是 Python 中用于删除对象的语句。对于字典,我们可以使用 del 关键字来删除指定的键值对。

python
>>> d = {"yr": 20, "name": "Ed", 18: True}
>>> del d["name"]  # 删除键为 "name" 的键值对
>>> d
{'yr': 20, 18: True}

注意: 如果尝试删除一个不存在的键,Python 解释器会抛出 KeyError 异常。

2. 使用 clear() 方法

clear() 方法用于清空字典中的所有键值对,使字典变成一个空字典。

python
>>> d = {"yr": 20, "name": "Ed", 18: True}
>>> d.clear()  # 清空字典
>>> d
{}

3. 使用 pop() 方法

pop(key[, default]) 方法用于移除字典中指定键的键值对,并返回该键对应的值。

  • 如果指定的键存在于字典中,则移除该键值对并返回对应的值。
  • 如果指定的键不存在于字典中,且提供了可选参数 default,则返回 default 的值。
  • 如果指定的键不存在于字典中,且没有提供 default 参数,则会引发 KeyError 异常。
python
>>> d = {"yr": 20, "name": "Ed", 18: True}
>>> d.pop("name")  # 移除键为 "name" 的键值对,并返回对应的值 "Ed"
'Ed'
>>> d
{'yr': 20, 18: True}

>>> d.pop("name") # 再次尝试 pop 一个不存在的键,会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'name'

>>> d.pop("name", "Punk")  # 键 "name" 不存在,返回默认值 "Punk"
'Punk'

pop() 方法的 default 参数在处理可能不存在的键时非常有用,可以避免程序因为 KeyError 异常而中断。

4. 使用 popitem() 方法

popitem() 方法用于移除并返回字典中的一个键值对。 Python 3.7+ 版本中,popitem() 移除的是最后插入的键值对(LIFO - 后进先出)。 在 Python 3.7 之前的版本,popitem() 移除的是任意一个键值对,没有特定的顺序。

python
>>> d = {"yr": 20, "name": "Ed", 18: True}
>>> d.popitem()  # 移除最后插入的 (18, True)  (Python 3.7+)
(18, True)
>>> d.popitem()  # 移除 'name': 'Ed'   (Python 3.7+)
('name', 'Ed')
>>> d.update({"name": "py"})
>>> d
{'yr': 20, 'name': 'py'}
>>> d.popitem()  # 移除 'name': 'py'
('name', 'py')
>>> d.popitem()  # 移除 'yr': 20
('yr', 20)
>>> d
{}
  • del d[key]: 删除指定键的键值对。
  • d.clear(): 清空字典。
  • d.pop(key[, default]): 删除指定键的键值对,并返回对应的值。 如果键不存在,返回 default 值 (如果提供),否则抛出 KeyError。
  • d.popitem(): 移除并返回一个键值对 (Python 3.7+ 移除最后插入的键值对).

选择哪种方法取决于你的具体需求。 如果你需要删除特定键的键值对,delpop() 是不错的选择。 如果你需要清空整个字典,clear() 是最方便的。 如果你想按 LIFO 顺序迭代并删除键值对,popitem() 很有用。