Python - 删除字典项



删除字典项

在 Python 中删除字典项是指从现有字典中删除键值对。字典是可变的数据结构,用于保存键及其关联值的配对。每个键充当唯一的标识符,映射到字典中的特定值。

从字典中删除项允许您消除字典中不必要或不需要的数据,从而减小其大小并修改其内容。

我们可以使用多种方法在 Python 中删除字典项,例如:

  • 使用 del 关键字
  • 使用 pop() 方法
  • 使用 popitem() 方法
  • 使用 clear() 方法
  • 使用字典推导式

使用 del 关键字删除字典项

Python 中的 del 关键字用于删除对象。在字典的上下文中,它用于根据指定的键(或键范围)从 字典 中删除项。

我们可以通过指定要删除的项的键来使用 del 关键字删除字典项。这将从字典中删除与指定键关联的键值对。

示例 1

在以下示例中,我们创建了一个名为 numbers 的字典,其中包含整数键及其对应的字符串值。然后,使用 del 关键字删除键为 '20' 的项:

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
print ("numbers dictionary before delete operation: \n", numbers)
del numbers[20]
print ("numbers dictionary before delete operation: \n", numbers)

这将产生以下输出:

numbers dictionary before delete operation: 
 {10: 'Ten', 20: 'Twenty', 30: 'Thirty', 40: 'Forty'}
numbers dictionary before delete operation: 
 {10: 'Ten', 30: 'Thirty', 40: 'Forty'}

示例 2

当 del 关键字与字典对象一起使用时,会将字典从内存中删除:

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
print ("numbers dictionary before delete operation: \n", numbers)
del numbers
print ("numbers dictionary before delete operation: \n", numbers)

以下是获得的输出:

numbers dictionary before delete operation:
 {10: 'Ten', 20: 'Twenty', 30: 'Thirty', 40: 'Forty'}
Traceback (most recent call last):
 File "C:\Users\mlath\examples\main.py", line 5, in <module>
  print ("numbers dictionary before delete operation: \n", numbers)
                                                           ^^^^^^^
NameError: name 'numbers' is not defined

使用 pop() 方法删除字典项

Python 中的 pop() 方法用于从字典中删除指定的键并返回相应的值。如果未找到指定的键,它可以选择性地返回默认值,而不是引发 KeyError。

我们可以使用 `pop()` 方法通过指定要删除的项目的键来删除字典项。此方法将返回与指定键关联的值,并从字典中删除键值对。

示例

在这个例子中,我们使用 `pop()` 方法从 'numbers' 字典中删除键为 '20' 的项(将其值存储在 val 中)。然后我们检索更新后的字典和弹出的值 -

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
print ("numbers dictionary before pop operation: \n", numbers)
val = numbers.pop(20)
print ("nubvers dictionary after pop operation: \n", numbers)
print ("Value popped: ", val)

以下是上述代码的输出 -

numbers dictionary before pop operation: 
 {10: 'Ten', 20: 'Twenty', 30: 'Thirty', 40: 'Forty'}
nubvers dictionary after pop operation: 
 {10: 'Ten', 30: 'Thirty', 40: 'Forty'}
Value popped:  Twenty

使用 popitem() 方法删除字典项

Python 中的 `popitem()` 方法用于删除并返回字典中的最后一个键值对。

从 Python 3.7 开始,字典保持插入顺序,因此 `popitem()` 删除最近添加的项。如果字典为空,则调用 `popitem()` 会引发 KeyError。

我们可以通过在字典上调用 `popitem()` 方法来删除字典项,该方法会删除并返回添加到字典中的最后一个键值对。

示例

在下面的示例中,我们使用 `popitem()` 方法从 'numbers' 字典中删除一个任意项(将其键值对都存储在 val 中),并检索更新后的字典以及弹出的键值对 -

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
print ("numbers dictionary before pop operation: \n", numbers)
val = numbers.popitem()
print ("numbers dictionary after pop operation: \n", numbers)
print ("Value popped: ", val)

上述代码的输出如下所示 -

numbers dictionary before pop operation: 
 {10: 'Ten', 20: 'Twenty', 30: 'Thirty', 40: 'Forty'}
numbers dictionary after pop operation: 
 {10: 'Ten', 20: 'Twenty', 30: 'Thirty'}
Value popped:  (40, 'Forty')

使用 clear() 方法删除字典项

Python 中的 clear() 方法 用于删除字典中的所有项。它有效地清空了字典,使其长度为 0。

我们可以通过在字典对象上调用 `clear()` 方法来删除字典项。此方法会删除字典中的所有键值对,使其有效地变为空。

示例

在以下示例中,我们使用 `clear()` 方法删除 'numbers' 字典中的所有项 -

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
print ("numbers dictionary before clear method: \n", numbers)
numbers.clear()
print ("numbers dictionary after clear method: \n", numbers)

我们得到如下所示的输出 -

numbers dictionary before clear method: 
 {10: 'Ten', 20: 'Twenty', 30: 'Thirty', 40: 'Forty'}
numbers dictionary after clear method: 
 {}

使用字典推导式删除字典项

字典推导式是在 Python 中创建字典的简洁方法。它遵循与列表推导式相同的语法,但生成字典而不是列表。使用字典推导式,您可以遍历可迭代对象(例如列表、元组或其他字典),对每个项目应用表达式,并根据该表达式的结果构造键值对。

我们不能直接使用字典推导式删除字典项。字典推导式主要用于基于现有数据的某些转换或过滤创建新字典,而不是用于从字典中删除项。

如果您需要根据某些条件从字典中删除项,通常会使用其他方法,如 `del`、`pop()` 或 `popitem()`。这些方法允许您明确指定要从字典中删除哪些项。

示例

在这个例子中,我们根据预定义的要删除的键列表从 'student_info' 字典中删除 'age' 和 'major' 项 -

# Creating a dictionary
student_info = {
    "name": "Alice",
    "age": 21,
    "major": "Computer Science"
}

# Removing items based on conditions
keys_to_remove = ["age", "major"]
for key in keys_to_remove:
    student_info.pop(key, None)

print(student_info)  

获得的输出如下所示 -

{'name': 'Alice'}
广告