Python 简明教程
Python - Remove Dictionary Items
Remove Dictionary Items
在 Python 中删除字典项是指从现有字典中删除键值对。字典是可变数据结构,它们包含键及其相关值的对。每个键充当一个唯一的标识符,映射到字典内特定值。
从字典中删除项使您可以消除字典中不必要或不需要的数据,从而减小其规模并修改其内容。
我们可使用多种方式在 Python 中移除字典项,例如 −
-
using the del keyword
-
using the pop() method
-
using the popitem() method
-
using the clear() method
-
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'}