知识点
- 创建字典:
- {}, dict()
- dict(zip(k,v))
- dict.fromkeys(a:list)
- a.update(b) a,b都为dict 没有添加,有则覆盖
- 字典删除
- clear()删除所有键值对
- del(a[‘name’])删除元素
- b = a.pop(‘age’)删除元素并返回该key对应的value
- popitem()字典无序所以随机移除元素
- 字典核心底层逻辑:
字典对象的核心是散列表。散列表是一个稀疏数组,每个单元叫bucket,每个bucket有两部分,一是键对象的引用,一是值对象的引用。
比如: a[‘name’] = ‘Gaoqi’ 第一步先计算’name‘的散列值:hash(),第二步使用bin()转化为二进制编码之后按固定位数寻找,找到非空的位置即可放入键值对。
存的时候同理,bin(hash())依次固定位数取,找到非空位置后判断该位置的bin(hash(key))是否与所求相等。 - 字典总结
- 键必须可散列
- 数字,字符串,元组均可散列
- 自定义对象支持以下三点:
- 支持hash()
- 支持通过__eq__()方法检测相等性
- 若a == b为真,则hash(a) == hash(b)为真
- 字典在内存中开销巨大,空间换时间
- 键查询速度快
- 往字典里添加新键,可能导致扩容,导致散列表中键的次序变化。因此,不要在遍历字典的同时修改字典。
- 键必须可散列
- 集合底层实现就是字典,只有字典的键对象。集合相关操作:
- a|b 并集 a.union(b)
- a-b 差集 a.difference(b)
- a&b 交集 a.intersection(b)
拜师教育学员文章:作者:1265-张同学,
转载或复制请以 超链接形式 并注明出处 拜师资源博客。
原文地址:《Python HW4》 发布于2020-08-26
评论 抢沙发