Dictionary (字典)
2024年11月12日大约 3 分鐘
學習內容:
- 了解什麼是 Dictionary(字典)及其特性
- 學習如何創建和操作字典
- 理解字典中的鍵值對(Key-Value Pair)
- 使用字典的常見方法(如
get()
、keys()
、values()
等) - 探索字典的迭代與解包技巧
什麼是 Dictionary (字典)?
Dictionary 是一種內建的資料結構,用於存儲鍵值對(Key-Value Pair)。每個鍵(Key)都是唯一的,並且鍵用來查找對應的值(Value)。字典使用大括號 {}
表示,鍵和值之間用冒號 :
分隔。
範例
person = {
"name": "Alice",
"age": 25,
"city": "Taipei"
}
在上面的例子中,"name"
、"age"
和 "city"
是鍵,而 "Alice"
、25
和 "Taipei"
是對應的值。
創建和操作字典
創建字典
可以直接使用大括號 {}
或使用 dict()
函數來創建字典。
# 使用大括號
student = {
"id": 123,
"name": "Bob",
"grade": "A"
}
# 使用 dict() 函數
book = dict(title="Python Programming", author="John", year=2022)
訪問字典中的值
使用鍵來查找對應的值。
print(student["name"]) # Bob
print(book["title"]) # Python Programming
注意:如果使用不存在的鍵來訪問值,會引發
KeyError
。
添加和更新字典元素
添加新鍵值對
可以直接為字典指定一個新鍵來添加元素。
student["age"] = 20
print(student) # {'id': 123, 'name': 'Bob', 'grade': 'A', 'age': 20}
更新現有鍵的值
student["grade"] = "A+"
print(student) # {'id': 123, 'name': 'Bob', 'grade': 'A+', 'age': 20}
刪除字典元素
使用 del
刪除鍵值對
del student["age"]
print(student) # {'id': 123, 'name': 'Bob', 'grade': 'A+'}
使用 pop()
方法
pop()
會刪除指定的鍵,並返回刪除的值。
grade = student.pop("grade")
print(grade) # A+
print(student) # {'id': 123, 'name': 'Bob'}
使用 clear()
清空整個字典
student.clear()
print(student) # {}
常見的字典方法
get()
用於安全地獲取值,當鍵不存在時返回 None
或指定的預設值。
age = person.get("age") # 25
height = person.get("height", "Not specified") # "Not specified"
keys()
、values()
和 items()
keys()
:返回所有鍵values()
:返回所有值items()
:返回所有鍵值對,作為 (鍵, 值) 的元組
print(person.keys()) # dict_keys(['name', 'age', 'city'])
print(person.values()) # dict_values(['Alice', 25, 'Taipei'])
print(person.items()) # dict_items([('name', 'Alice'), ('age', 25), ('city', 'Taipei')])
遍歷字典
可以使用 for
迴圈來遍歷字典的鍵、值或鍵值對。
遍歷鍵
for key in person:
print(key) # name, age, city
遍歷值
for value in person.values():
print(value) # Alice, 25, Taipei
遍歷鍵值對
for key, value in person.items():
print(f"{key}: {value}") # name: Alice, age: 25, city: Taipei
字典解包 (Unpacking)
可以使用 **
將字典解包成函數的參數。
範例
def greet(name, age):
print(f"Hello, my name is {name} and I am {age} years old.")
info = {"name": "Charlie", "age": 30}
greet(**info) # Hello, my name is Charlie and I am 30 years old.
字典的應用場景
- 數據映射:例如,將學生成績對應到學生姓名。
- 存儲配置:使用字典存儲程序的配置參數,方便查找和更新。
- 統計計數:用字典來計算元素出現的次數。
範例:統計計數
words = ["apple", "banana", "apple", "orange", "banana", "apple"]
count = {}
for word in words:
count[word] = count.get(word, 0) + 1
print(count) # {'apple': 3, 'banana': 2, 'orange': 1}
練習
- 創建一個字典,存儲你喜愛的三部電影及其上映年份,並使用
get()
方法來安全地訪問其中一部電影的年份。 - 編寫一個程式,模擬簡單的學生成績記錄系統,可以添加學生和成績,並計算出所有學生的平均分數。
- 使用字典來存儲產品價格,並編寫程式查找最貴和最便宜的產品。