Python之学习笔记(六)
文章目录
- 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))。
初稿,未完待续……