ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2020-12-24

2020-12-24 22:03:29  阅读:142  来源: 互联网

标签:24 12 数组 bucket 键值 key 2020 tb 字典


每日作业

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。

将一个键值对放进字典的底层过程
在这里插入图片描述

假设字典 a 对象创建完后,数组长度为 8:

我们要把 ”name”=”R_lee” 这个键值对放到字典对象 a 中,首先第一步需要计算键 ”name” 的散列值。Python 中可以通过 hash() 来计算。

由于数组长度为 8,我们可以拿计算出的散列值的最右边 3 位数字作为偏移量,即“101”,十进制是数字 5。我们查看偏移量 5,对应的 bucket 是否为空。如果为空,则将键值对放进去。如果不为空,则依次取右边 3 位作为偏移量,即“100”,十进制是数字 4。再查看偏移量为 4 的 bucket 是否为空。直到找到为空的 bucket 将键值对放进去。

流程图如下:
在这里插入图片描述
在这里插入图片描述

扩容

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

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

3.9

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

标签:24,12,数组,bucket,键值,key,2020,tb,字典
来源: https://blog.csdn.net/marysv/article/details/111656850

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有