Py001_02_05Python哈希和字典
hash
hash值计算过程中依据这个值一些特征计算的,这就要求hash值必须固定,因此被hash的值必须是不可变的
不可变数据类型
- 数字
- 字符串
- 元组
可变数据类型
- 列表
hash函数
1 | hash('aaa') |
字典
键值对 k/v
特性
- k/v
- key必须放可hash ,且必须为不可变数据类型,必须唯一
- value可存放任意多个值,可修改,可以不唯一
- 无序
- 查找速度快
1 | infos = { |
crud
增加
1 | info = {} |
修改
1 | info = {"a":2} |
查找
1 | info = { |
删除
- pop(删除的key)
- popitem() 随机删
- del info[key]删除某个key
- clear() 清空字典
其他方法
- keys() 获取key的列表
- values() 获取值的列表
- items() 将key和value放入到元组里,返回一个列表
- setdefault() 查看字典是否有这个key没有则设置默认值,有没有都返回这个key对应的值
- fromkeys() 批量生成字典,并设置默认值
集合类型
如何找出既买了iphone7和8的人
1 | i7 = ["a","b","c","d"] |
什么是集合
无序的,不重复的数据集合
- 去重,把一个列表变成集合就自动去重了
- 关系测试
1 | s = {} |
CRUD
1 | s = {1,2,3,4,5} |
集合的关系测试
1 | i7 = {"a","b","c","d"} |
交集
1 | 第一种 |
差集
1 | # 买了i7没买i8的人 |
并集
1 | i7.union(i8) # {'d', 'e', 'f', 'c', 'a', 'b'} |
对称差集
并集取反
1 | i7.symmetric_difference(i8) # {'f', 'e', 'c', 'd'} |
- difference_update 将差集的结果赋值给集合
关系
- isdisjoint 判断两个集合是不是不相交
- issuperset 是否包含
- issubset 是否被其他集合包含
1 | a = {1,2,3,4} |