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 关键字与 dictionary 对象一起使用时,会从内存中删除字典 -


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() 方法用于从字典中删除指定的 key 并返回相应的值。如果未找到指定的键,则可以选择返回默认值,而不是引发 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。

我们可以通过在 dictionary 对象上调用 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 中创建字典的一种简洁方法。它遵循与 list comprehension 相同的语法,但生成的是字典而不是列表。使用字典推导式,您可以迭代可迭代对象(例如列表、元组或其他字典),将表达式应用于每个项目,并根据该表达式的结果构造键值对。

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

如果需要根据某些条件从字典中删除项目,通常使用其他方法,如 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'}