Python 中的字典(Dictionary)與集合(Set)都是重要的資料結構。字典是鍵值對的集合,允許我們使用唯一的鍵來快速查找值;集合則是無序的、不允許重複的元素集合。今天的學習目標是掌握字典的基本操作,了解集合的應用場景,並通過練習題鞏固這些知識。
字典是一個可變的容器,允許我們通過鍵(Key)來存取對應的值(Value)。字典中的鍵必須是唯一的,並且是不可變的數據類型(如整數、字串或元組)。
{}
或 dict()
函數來建立字典,鍵值對通過冒號 :
進行分隔。person = {
"姓名": "o",
"年齡": 20,
"職業": "學生"
}
KeyError
錯誤。print(person["姓名"]) # 輸出: o
person["城市"] = "台北"
print(person) # 輸出: {'姓名': 'o', '年齡': 20, '職業': '學生', '城市': '台北'}
del
或 pop()
方法可以刪除字典中的指定鍵值對。del person["年齡"]
print(person) # 輸出: {'姓名': 'o', '職業': '學生', '城市': '台北'}
in
關鍵字來檢查某個鍵是否存在於字典中。if "職業" in person:
print("職業存在於字典中")
for key, value in person.items():
print(f"{key}: {value}")
集合是一個無序的、不重複的元素集合,通常用來執行數學運算(如聯集、交集、差集)。集合中的元素必須是不可變的(例如整數、字串或元組)。
{}
或 set()
函數來建立集合。fruits = {"蘋果", "香蕉", "橘子"}
add()
方法來向集合中新增元素。fruits.add("葡萄")
print(fruits) # 輸出: {'蘋果', '香蕉', '橘子', '葡萄'}
remove()
方法來刪除集合中的指定元素,若元素不存在則會引發錯誤。fruits.remove("香蕉")
print(fruits) # 輸出: {'蘋果', '橘子', '葡萄'}
集合運算:
union()
或 |
運算符來取得兩個集合的聯集。set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1 | set2
print(union_set) # 輸出: {1, 2, 3, 4, 5}
intersection()
或 &
來取得兩個集合的交集。intersection_set = set1 & set2
print(intersection_set) # 輸出: {3}
difference()
或 -
來取得一個集合相對於另一個集合的差集。difference_set = set1 - set2
print(difference_set) # 輸出: {1, 2}
題目描述:輸入一段文字,統計每個字母出現的次數,並輸出結果。
解題思路:
範例程式碼:
text = "hello world"
count_dict = {}
for char in text:
if char.isalpha(): # 只統計字母
count_dict[char] = count_dict.get(char, 0) + 1
print(count_dict) # 輸出: {'h': 1, 'e': 1, 'l': 3, 'o': 2, 'w': 1, 'r': 1, 'd': 1}
題目描述:輸入兩個集合,計算它們的聯集與交集。
解題思路:
union()
和 intersection()
方法來計算兩個集合的聯集和交集。範例程式碼:
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
union_set = set1.union(set2)
intersection_set = set1.intersection(set2)
print(f"聯集: {union_set}") # 輸出: 聯集: {1, 2, 3, 4, 5, 6}
print(f"交集: {intersection_set}") # 輸出: 交集: {3, 4}
題目描述:給定一個包含重複元素的列表,請使用集合來去除重複項。
解題思路:
範例程式碼:
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = list(set(numbers))
print(unique_numbers) # 輸出: [1, 2, 3, 4, 5]
字典與集合是 Python 中兩個非常高效且常用的資料結構。字典的鍵值對操作提供了快速查詢與儲存數據的能力,而集合則提供了強大的數學集合運算與去重功能。在這次學習中,我們不僅掌握了它們的基本操作,還透過練習題加深了對字典和集合的應用理解。