Python 字典 (Dictionary) (08):學會建立、查詢與修改

把「名稱」對應到「資料」,你就需要字典(Dictionary)。

它是 Python 最好用的「查表」結構:用快速找到,很適合做選單與價格、設定參數、API/JSON 資料、統計彙整等日常工作。

字典的鍵必須唯一、可作修改(新增/更新/刪除),用起來直觀又高效。

什麼是字典(Dictionary)?

字典是 Python 中的一種資料結構,用於存儲鍵值對(key-value pairs)。它提供了一種將不同資料映射到一起的方式,使我們能夠快速找到相關聯的值。

無序性

字典中的項目沒有特定順序

鍵的唯一性

每個鍵在字典中只能出現一次

可變性

可以添加、修改或刪除字典中的項目

字典使用大括號 { } 創建,每個項目由一個鍵和一個值組成,中間用冒號 : 分隔,不同項目之間用逗號 , 分隔。

Cafe menu board with prices displayed next to food items, soft lighting

字典的實際應用場景

想象一下,我們需要存儲咖啡館菜單上不同食品的價格:

menu = {
    "酪梨吐司": 6, 
    "胡蘿蔔汁": 5, 
    "藍莓鬆餅": 2
}
  

在這個例子中:

  1. 字典以大括號 { } 開始和結束
  2. 每個項目由一個鍵(如 “酪梨吐司”)和一個值(如 6)組成
  3. 每個鍵值對之間用逗號分隔

通過這種結構,我們可以輕鬆地查找任何菜品的價格。

創建字典的多種方式

直接賦值

person = {"name": "小明", "age": 18}

空字典

empty_dict = {}

使用 dict() 函數

colors = dict(red="紅色", blue="藍色")

字典的靈活性

字典的值可以是任何資料類型,包括數字、字符串、列表,甚至是另一個字典!

student = {
 "name": "小花", 
 "age": 16, 
 "scores": [95, 88, 92],
 "contact": {"phone": "0912345678", "email": "xiaohua@example.com"}
}

字典的鍵的限制

並非所有資料類型都可以作為字典的鍵。字典的鍵必須是不可變(immutable)的資料類型

可用作鍵的類型

  • 字符串(string)
  • 數字(int, float)
  • 元組(tuple)- 如果其中包含的所有元素也是不可變的
  • 布爾值(bool)

不可用作鍵的類型

  • 列表(list)
  • 字典(dict)
  • 集合(set)
  • 任何可變的對象

如果嘗試使用 mutable 的類型(如列表)作為鍵,Python 會拋出 TypeError: unhashable type 錯誤!

# 這段代碼會產生錯誤
powers = {[1, 2, 4, 8, 16]: 2, [1, 3, 9, 27, 81]: 3}
# TypeError: unhashable type: 'list'

訪問字典中的值

一旦創建了字典,我們可以使用鍵來訪問對應的值。有兩種主要方式可以訪問字典中的值:

使用中括號 [ ]

building_heights = {"台北101": 508, "上海中心": 632, "哈里發塔": 828}
print(building_heights["台北101"])  # 輸出: 508

使用 get() 方法

height = building_heights.get("台北101")  # 返回 508

兩者的主要區別在於處理不存在的鍵的方式:

  • 中括號語法:如果鍵不存在,會拋出 KeyError 錯誤
  • get() 方法:如果鍵不存在,默認返回 None,不會產生錯誤
Animated illustration of adding puzzle pieces to a structure, representing adding elements to a dictionary

向字典添加元素

使用索引賦值的方式:

menu = {"酪梨吐司": 6, "胡蘿蔔汁": 5, "藍莓鬆餅": 2}
menu["起司蛋糕"] = 8
# 現在 menu 為 {"酪梨吐司": 6, "胡蘿蔔汁": 5, "藍莓鬆餅": 2, "起司蛋糕": 8}
  

添加多個鍵值對

使用 update() 方法:

sensors = {"客廳": 21, "廚房": 23, "臥室": 20}
sensors.update({"儲藏室": 22, "客房": 25, "露台": 34})
# 現在 sensors 包含了所有六個房間的溫度

更新字典中的值

更新字典中已存在的鍵的值與添加新的鍵值對的語法相同:

menu = {"燕麥粥": 3, "酪梨吐司": 6, "胡蘿蔔汁": 5, "藍莓鬆餅": 2}
menu["燕麥粥"] = 5
# 現在 menu 為 {"燕麥粥": 5, "酪梨吐司": 6, "胡蘿蔔汁": 5, "藍莓鬆餅": 2}
  

添加新鍵

如果指定的鍵不存在,Python 會創建一個新的鍵值對

更新現有鍵

如果指定的鍵已存在,Python 會覆蓋原有的值

這種一致的語法使得字典操作更加直觀和簡潔,無需記住不同的添加和更新方法。

Person removing a puzzle piece from a structure, conceptual illustration for deleting dictionary elements

刪除字典中的元素

Python 提供了幾種從字典中刪除元素的方法:

使用 pop() 方法

raffle = {223842: "泰迪熊", 872921: "音樂會門票"}
prize = raffle.pop(223842, "沒有獎品")
# prize 為 "泰迪熊",且該項從字典中移除
      

同時返回值並從字典中刪除該項

使用 del 關鍵字

menu = {"燕麥粥": 5, "酪梨吐司": 6}
del menu["燕麥粥"]
# 現在 menu 只包含 {"酪梨吐司": 6}
      

直接刪除,不返回值

使用 clear() 方法

menu.clear()
# 清空整個字典,現在 menu 為 {}
      

刪除字典中的所有項目

到這裡,我們已經掌握了 字典的基礎操作:如何建立字典、添加與更新元素、存取值、以及刪除資料。這些技巧足以應付大部分日常的 Python 開發情境。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端