文章目錄
- 1. 字典(Dictionary)
- 2. 集合(Set)
- 3. 字典 vs 集合
- 4. 應用場景
- 5. 注意事項
Python中的字典(
dict
)和集合(
set
)是兩種高效且常用的數據結構,適用于不同的場景。以下是它們的核心概念、操作、區別及典型應用:
1. 字典(Dictionary)
- 定義:鍵值對(
key-value
)的無序集合(Python 3.7+ 后字典按插入順序保留)。 - 特點:
- 鍵(
key
)必須唯一且不可變(如字符串、數字、元組)。 - 值(
value
)可以是任意類型。
- 鍵(
- 操作:
# 創建 d = {"name": "Alice", "age": 25} d = dict(name="Bob", age=30)# 訪問 print(d["name"]) # Alice(KeyError 若鍵不存在) print(d.get("age", 0)) # 25(若鍵不存在返回默認值0)# 添加/修改 d["gender"] = "Female" # 添加新鍵值對 d["age"] = 26 # 修改已有鍵的值# 刪除 del d["gender"] # 刪除鍵值對 value = d.pop("age") # 彈出并返回值# 常用方法 keys = d.keys() # 所有鍵的視圖 values = d.values() # 所有值的視圖 items = d.items() # 所有鍵值對的視圖# 字典推導式 squares = {x: x**2 for x in range(5)} # {0:0, 1:1, 2:4, ...}
2. 集合(Set)
- 定義:無序、不重復元素的容器。
- 特點:
- 元素必須不可變(如數字、字符串、元組)。
- 支持數學集合運算(并集、交集等)。
- 操作:
# 創建 s = {1, 2, 3} s = set([1, 2, 2, 3]) # {1, 2, 3}(去重)# 添加/刪除 s.add(4) # 添加元素 s.remove(3) # 刪除元素(KeyError 若不存在) s.discard(5) # 安全刪除(無異常)# 集合運算 a = {1, 2, 3} b = {3, 4, 5} print(a | b) # 并集 {1,2,3,4,5} print(a & b) # 交集 {3} print(a - b) # 差集 {1, 2} print(a ^ b) # 對稱差集 {1,2,4,5}# 集合推導式 even = {x for x in range(10) if x % 2 == 0} # {0,2,4,6,8}
3. 字典 vs 集合
特性 | 字典(dict) | 集合(set) |
---|---|---|
存儲方式 | 鍵值對(key: value ) | 單一元素 |
有序性 | Python 3.7+ 保留插入順序 | 無序 |
唯一性 | 鍵唯一 | 元素唯一 |
元素類型 | 鍵不可變,值任意 | 元素必須不可變 |
查找速度 | O(1)(基于鍵) | O(1)(基于元素) |
典型用途 | 數據映射、結構化信息存儲 | 去重、集合數學運算 |
4. 應用場景
-
字典:
- 存儲對象屬性(如用戶信息:
{"name": "Alice", "age": 25}
)。 - 快速查找表(如單詞計數器:
{"apple": 5, "banana": 3}
)。 - JSON數據解析與存儲。
- 存儲對象屬性(如用戶信息:
-
集合:
- 去除列表中的重復元素:
unique = list(set(duplicate_list))
。 - 成員關系測試(如檢查IP是否在黑名單)。
- 集合運算(如求共同好友:
friends_a & friends_b
)。
- 去除列表中的重復元素:
5. 注意事項
- 字典:避免使用可變類型(如列表)作為鍵。
- 集合:空集合必須用
set()
創建,{}
表示空字典。 - 兩者均依賴哈希表實現,查找速度極快(O(1))。
初稿,未完待續……