Dictionary 字典 和 Set 集合
Dictionary 字典
字典(Dictionary)是 Python 中一個常用的資料結構,用於儲存一組鍵值對(Key-Value pairs)。每個鍵對應到一個值,可以根據鍵來快速存取對應的值,它是一種無序的鍵值對集合,用於存儲可變的、可索引的資料。字典以大括號 {}
表示,每個鍵值對之間使用冒號 :
分隔。以下是字典的基本用法:
字典的特點:
- 無序性: 字典中的鍵值對是無序的,無法通過索引來訪問元素。
- 可變性: 字典的內容可以修改,包括添加新的鍵值對、修改已有的值,以及刪除鍵值對。
- 唯一鍵: 字典中的鍵是唯一的,不可重複。
- 任意類型: 字典的鍵和值可以是任意的 Python 物件,可以是數字、字串、元組等。
創建字典
使用 {}
大括號創建字典,每個鍵值對使用冒號 :
分隔,並且鍵值對之間使用逗號 ,
分隔。
# 創建一個字典
student = {
"name": "Alice",
"age": 18,
"gender": "female"
}
存取字典中的值
可以使用鍵來存取字典中的值。
# 存取字典中的值
print(student["name"]) # 輸出:Alice
print(student["age"]) # 輸出:18
print(student["gender"]) # 輸出:female
修改字典中的值
可以根據鍵來修改字典中的值。
# 修改字典中的值
student["age"] = 19
print(student["age"]) # 輸出:19
新增鍵值對
可以使用鍵來新增鍵值對。
# 新增鍵值對
student["city"] = "New York"
print(student)
# 輸出:{'name': 'Alice', 'age': 19, 'gender': 'female', 'city': 'New York'}
刪除鍵值對
可以使用 del
關鍵字來刪除字典中的鍵值對。
# 刪除鍵值對
del student["gender"]
print(student)
# 輸出:{'name': 'Alice', 'age': 19, 'city': 'New York'}
檢查鍵是否存在
可以使用 in
關鍵字來檢查特定的鍵是否存在於字典中。
# 檢查鍵是否存在
if "age" in student:
print("age 鍵存在")
else:
print("age 鍵不存在")
字典是一個非常有用的資料結構,能夠幫助你組織和存儲各種資料,並且支援快速的存取和修改操作。
在 Python 中,你可以使用迴圈來輪詢字典中的鍵和值。有幾種方式可以實現這個輪詢的過程,讓我們來看看幾個例子:
輪詢字典的鍵
你可以使用 for
迴圈來輪詢字典的鍵。
student = {
"name": "Alice",
"age": 18,
"city": "New York"
}
for key in student:
print(key)
# 輸出:name
# 輸出:age
# 輸出:city
輪詢字典的值
你可以使用 .values()
方法來輪詢字典的值。
for value in student.values():
print(value)
# 輸出:Alice
# 輸出:18
# 輸出:New York
輪詢字典的鍵值對
你可以使用 .items()
方法來輪詢字典的鍵值對,並同時取得鍵和值。
for key, value in student.items():
print(f"{key}: {value}")
# 輸出:name: Alice
# 輸出:age: 18
# 輸出:city: New York
這些方法可以幫助你在迴圈中有效地輪詢字典的內容,並進行相應的操作。無論是輪詢鍵、值,還是鍵值對,都能夠很方便地進行。
字典常用方法
方法 | 說明 | 範例 |
---|---|---|
len(dictionary) | 返回字典中鍵值對的數量。 | len(my_dict) |
dictionary[key] | 通過鍵取得對應的值。 | value = my_dict[‘key’] |
dictionary[key] = value | 通過鍵設定新的鍵值對。 | my_dict[‘new_key’] = ‘new_value’ |
key in dictionary | 檢查指定的鍵是否存在於字典中,返回布林值。 | if ‘key’ in my_dict: |
dictionary.get(key) | 返回指定鍵對應的值,如果鍵不存在,則返回指定的預設值。 | value = my_dict.get(‘key’, default) |
dictionary.pop(key) | 刪除指定鍵的鍵值對,返回對應的值。 | removed_value = my_dict.pop(‘key’) |
dictionary.keys() | 返回字典中所有的鍵的列表。 | keys_list = my_dict.keys() |
dictionary.values() | 返回字典中所有的值的列表。 | values_list = my_dict.values() |
dictionary.items() | 返回字典中所有的鍵值對的元組列表。 | items_list = my_dict.items() |
dictionary.clear() | 清空字典中的所有鍵值對,使其變為空字典。 | my_dict.clear() |
dictionary.copy() | 返回字典的副本。 | new_dict = my_dict.copy() |
dictionary.update(other_dict) | 將另一個字典的鍵值對更新到原字典中。 | my_dict.update(new_dict) |
dictionary.setdefault(key, default) | 返回指定鍵對應的值,如果鍵不存在,則設定該鍵的值為預設值。 | value = my_dict.setdefault(‘key’, default) |
集合
集合(Set)是 Python 中的一種無序、可變的資料結構,用於存儲多個元素,且集合中的元素是唯一的(不重複)。集合使用大括號 {} 來定義,元素之間使用逗號 , 分隔。
my_set = {1, 2, 3}
another_set = set([3, 4, 5])
集合有以下特點:
- 元素無序:集合中的元素沒有固定的順序,因此無法使用索引來訪問。
- 元素唯一:集合中的元素是唯一的,不會有重複的元素。
- 可變性:集合中的元素可以被新增、刪除和修改。
你可以使用集合來解決需要存儲一組元素,但不需要考慮元素順序和重複的問題的情況。
集合提供了各種方法來執行集合間的交集、聯集、差集等操作。
新增元素到集合
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 輸出:{1, 2, 3, 4}
刪除元素從集合
my_set = {1, 2, 3, 4}
my_set.remove(3)
print(my_set) # 輸出:{1, 2, 4}
刪除元素但不引發錯誤,如果元素不存在:
my_set = {1, 2, 3, 4}
my_set.discard(5) # 元素 5 不存在於集合,但不會引發錯誤
print(my_set) # 輸出:{1, 2, 3, 4}
清空集合
my_set = {1, 2, 3, 4}
my_set.clear()
print(my_set) # 輸出:set()
複製集合
original_set = {1, 2, 3}
new_set = original_set.copy()
print(new_set) # 輸出:{1, 2, 3}
您可以根據這些範例來理解集合的新增、修改和刪除操作。
集合運算
運算 | 符號 / 方法 | 範例 |
---|---|---|
AND交集 | & | set1 & set2 |
交集方法 | .intersection(set2) | set1.intersection(set2) |
OR聯集 | | | set1 | set2 |
聯集方法 | .union(set2) | set1.union(set2) |
XOR差集 | - | set1 - set2 |
差集方法 | .difference(set2) | set1.difference(set2) |
集合常用方法
方法 / 操作 | 說明 | 範例 |
---|---|---|
add(element) | 新增元素到集合 | my_set = {1, 2, 3} my_set.add(4) # 現在 my_set = {1, 2, 3, 4} |
remove(element) | 移除元素從集合,如果元素不存在會引發錯誤 | my_set = {1, 2, 3, 4} my_set.remove(3) # 現在 my_set = {1, 2, 4} |
discard(element) | 移除元素從集合,元素不存在不會引發錯誤 | my_set = {1, 2, 3, 4} my_set.discard(5) # 現在 my_set = {1, 2, 3, 4} |
pop() | 移除並回傳任意元素 | my_set = {1, 2, 3} removed_element = my_set.pop() |
clear() | 清空集合 | my_set = {1, 2, 3} my_set.clear() # 現在 my_set = set() |
copy() | 複製集合 | original_set = {1, 2, 3} new_set = original_set.copy() |
len(set) | 回傳集合中元素的數量 | my_set = {1, 2, 3} length = len(my_set) # length 為 3 |
element in set | 檢查元素是否在集合中 | my_set = {1, 2, 3} result = 2 in my_set # result 為 True |
set1.union(set2) | 回傳兩個集合的聯集 | set1 = {1, 2, 3} set2 = {3, 4, 5} union_set = set1.union(set2) |
set1.intersection(set2) | 回傳兩個集合的交集 | set1 = {1, 2, 3} set2 = {3, 4, 5} intersection_set = set1.intersection(set2) |
set1.difference(set2) | 回傳 set1 減去 set2 的差集 | set1 = {1, 2, 3} set2 = {3, 4, 5} difference_set = set1.difference(set2) |
set1.symmetric_difference(set2) | 回傳兩個集合的對稱差集 | set1 = {1, 2, 3} set2 = {3, 4, 5} symmetric_difference_set = set1.symmetric_difference(set2) |
set1.issubset(set2) | 檢查 set1 是否是 set2 的子集 | set1 = {1, 2} set2 = {1, 2, 3} result = set1.issubset(set2) # result 為 True |
set1.issuperset(set2) | 檢查 set1 是否是 set2 的超集 | set1 = {1, 2, 3} set2 = {1, 2} result = set1.issuperset(set2) # result 為 True |