Python 简明教程

Python - Remove Dictionary Items

Remove Dictionary Items

在 Python 中删除字典项是指从现有字典中删除键值对。字典是可变数据结构,它们包含键及其相关值的对。每个键充当一个唯一的标识符,映射到字典内特定值。

从字典中删除项使您可以消除字典中不必要或不需要的数据,从而减小其规模并修改其内容。

我们可使用多种方式在 Python 中移除字典项,例如 −

  1. using the del keyword

  2. using the pop() method

  3. using the popitem() method

  4. using the clear() method

  5. using dictionary comprehension

Remove Dictionary Items Using del Keyword

Python 中的 del 关键字用于删除对象。在字典的情况下,它用于从 dictionary 中删除某一项或一系列项,其依据是指定键。

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

Example 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'}

Example 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

Remove Dictionary Items Using pop() Method

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

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

Example

在此示例中,我们使用 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

Remove Dictionary Items Using popitem() Method

Python 中的 popitem() 方法用于从字典中移除并返回最后的键值对。

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

Example

在以下示例中,我们使用 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')

Remove Dictionary Items Using clear() Method

Python 中的 clear() method 用于从字典中移除所有项。这会有效地清空字典,使其长度为 0。

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

Example

在以下示例中,我们使用 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:
 {}

Remove Dictionary Items Using Dictionary Comprehension

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

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

Example

在此示例中,我们根据要移除的预定义键列表,从 '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'}