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

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 開發情境。

發佈留言

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

High Quality

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.

Fast Delivery

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.

Best Warranty

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.