python入门—字典
字典是‘键值对’的无序可变序列,字典中的每个元素都是一个键值对,包含‘键’和‘值对象’
‘键’是任意的不可变数据
‘值’可以是任意的数据,并且可以重复
a={‘name’:‘HT’,'age":18,‘job’:‘student’}
字典的创建
{}
dict(x=a,y=b) 注意键不用加**‘’**
dict([(x,y,z),(a,b,c)])
dict.fromkeys([x,y]) 创建值为空的字典
字典元素的访问
a[key] 若没有这个键 报错
a.get(key) 没有这个键返回空格
a.get(key,x) 没有这个键返回x
a.items() 列出所有的键值对
a.keys() 列出所有的键
a.values() 列出所有的值
len(a) 键值对个数
key in a 检验一个键是否在字典中
字典元素添加、修改、删除
a[key]=x 如果键存在,则会自动覆盖
a.update(b) 将b中所有键值对全部添加到a上。如果有Key重复,则直接覆盖
del(a[key]) 删除键值对
b=a.pop(key) 删除键值对,并返回对应值对象
a.clear()
a.popitem() 随机删除和返回该键值对。
序列的解包
序列的解包可以用于元组、列表、字典。序列解包可以让我们方便的对多个变量赋值。
x,y,z=a,b,c
x,y,z=(a,b,c)
(x,y,z)=(a,b,c)
[x,y,z]=[a,b,c]
序列解包用于字典时,默认是对键进行操作。
x,y,z=a
x,y,z=a.items()
x,y,z=a.values()
字典核心底层原理
字典对象的核心是散列表。
散列表是一个稀疏数组(总是有空白的数组)
数组的每个单元叫做bucket。
每个bucket有两部分:一个是键对象的引用,一个是值对象的引用
将一个键值对放入底层的过程
散列表的偏移量
键的散列值
- List item
哈希方法
bin(hush(key))
根据键查找“键值对”的底层过程