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'}
廣告