2020-12-24

每日作业

3.6

a = {'支出金额':300.15,'支出日期':'2018.10.18','支出人':'高小七'}
print(a)

3.7

r1 = {'姓名':'高小一','年龄':18,'薪资':30000,'城市':'北京'}
r2 = {'姓名':'高小二','年龄':19,'薪资':20000,'城市':'上海'}
r3 = {'姓名':'高小五','年龄':20,'薪资':10000,'城市':'深圳'}
tb = [r1,r2,r3]
print(tb)
for i in range(len(tb)):
    print(tb[i].get('姓名'),tb[i].get('年龄'),tb[i].get('薪资'),tb[i].get('城市'))

3.8

字典对象的核心是散列表。散列表是一个稀疏数组(总是有空白元素的数组),数组的每个单元叫做 bucket。每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引用。

由于,所有 bucket 结构和大小一致,我们可以通过偏移量来读取指定的 bucket。
2020-12-24
将一个键值对放进字典的底层过程
在这里插入图片描述
2020-12-24
假设字典 a 对象创建完后,数组长度为 8:
2020-12-24
我们要把 ”name”=”R_lee” 这个键值对放到字典对象 a 中,首先第一步需要计算键 ”name” 的散列值。Python 中可以通过 hash() 来计算。
2020-12-24
由于数组长度为 8,我们可以拿计算出的散列值的最右边 3 位数字作为偏移量,即“101”,十进制是数字 5。我们查看偏移量 5,对应的 bucket 是否为空。如果为空,则将键值对放进去。如果不为空,则依次取右边 3 位作为偏移量,即“100”,十进制是数字 4。再查看偏移量为 4 的 bucket 是否为空。直到找到为空的 bucket 将键值对放进去。

流程图如下:
2020-12-24
2020-12-24

扩容

Python 会根据散列表的拥挤程度扩容。“扩容”指的是创建更大的数组,将原有内容拷贝到新数组中。

接近 2/3 时,数组就会扩容。

3.9

集合(set)是一个无序不重复元素的序列。
它没有索引的概念,集合中的数据可以进行添加、删除等操作;
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
字典(dict,全称: dictionary )是python内置的一种使用“键值对结构”存储数据的存储模型。
字典不具备索引的概念,但可以通过字典的键key操作字典中存储的数据值value
字典(dict)内部存放的顺序和键key放入的顺序是没有关系的。
字典可以根据键(key)进行数据的添加、删除、修改、查询等操作
字典通过键(key)计算位置的算法称为哈希算法(Hash)
要保证hash的正确性, 作为key的对象就不能变。 在Python中, 字符串、整数等不可变类型的数据可作为 字典的键
字典的key是唯一的且必须是不可变的类型(对象), 如纯元素可以作为字典的key
集合和字典检索的原理是一样的, 唯一区别就是没有存储对应的value值; 字典的键值和集合的元素不可以放入可变对象, 因为无法判断两个可变对象是否相等, 也就无法保证集合(字典键值)不会有重复的元素。

上一篇:element-ui中得upload组件上传视频到阿里OSS


下一篇:知行教育项目_Hive参数优化