6 、集合与字典
一、集合🧀
1、创建🧀
集合(set)是一个无序的不重复元素序列。并且可以进行交集、并集、差集等常见的集合操作。
- 不能使用下标访问集合
创建一个空集合必须用 set()
而不是 {}
,因为 {}
是用来创建一个空字典。
2、内建函数🧀
函数 | 说明 |
---|---|
add(x) | 添加元素 x |
remove(x) | 删除元素 x (若不存在会报错) |
discard(x) | 删除元素 x (若不存在不会报错) |
clear() | 清空集合 |
union(other) | 并集:返回两个集合的所有元素(不重复) |
intersection(other) | 交集:返回两个集合共有的元素 |
difference(other) | 差集:返回仅存在于 a 中的元素 |
symmetric_difference(other) | 对称差集:返回 a 和 b 中非共有的元素 |
3、集合特性🧀
- 无序
- 唯一
- 元素不可变
- 快速访问:\(O(1)\)
哈希
哈希函数(hash()
):
- 输入任意值,输出一个整数。
- 相同值的哈希值总是一样,但不同值的哈希值通常不同。
- 在集合或字典中,Python 用哈希值来快速定位元素。
内部结构:哈希表(Hash Table)
- Python 内部用一个 哈希表 存储集合元素。
- 这个哈希表可以理解为一个由 N 个“桶”(bucket)组成的列表。
元素添加的过程:
→ 所有操作都是 \(O(1)\) 的时间复杂度!
二、字典🧀
字典是另一种可变容器模型,且可存储任意类型对象。
1、创建🧀
- 空字典
- 静态分配
- 从成对元组
2、内建方法🧀
函数 | 用途说明 |
---|---|
dict.clear() | 删除字典内所有元素 |
dict.copy() | 返回一个字典的浅复制 |
dict.fromkeys(seq, val) | 创建一个新字典,以序列 seq 中元素为键,所有键对应的值为 val |
dict.get(key, default=None) | 返回指定键的值,若键不存在则返回 default 默认值 |
key in dict | 判断键是否存在于字典中,存在返回 True ,否则返回 False |
dict.items() | 返回包含字典中所有 (键, 值) 对的视图对象 |
dict.keys() | 返回包含字典所有键的视图对象 |
dict.setdefault(key, default=None) | 如果键存在,返回其值;否则添加该键并设为 default |
dict.update(dict2) | 将字典 dict2 中的键值对添加/更新到当前字典中 |
dict.values() | 返回包含字典所有值的视图对象 |
dict.pop(key[, default]) | 删除键 key 对应的值并返回;若不存在且未设置 default ,则报错 |
dict.popitem() | 删除并返回字典中的最后一组 (键, 值) 对(Python 3.7+ 保持插入顺序) |
3、字典特性🧀
- 键(key)是无序的集合(set)
- 键是唯一的
- 值可以任取数据类型,但是键必须是可哈希的(不能是list)