文章目录
学习笔记(2024.08.03)
一、字典和字典的创建
1.字典
字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。
列表中我们通过“下标数字”找到对应的对象。字典中通过“键对象” 找到对应的“值对象”。“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是:列表、字典、集合这些可变对象,不能作为“键”。并且“键”不可重复。
“值”可以是任意的数据,并且可重复。
一个典型的字典的定义方式:
a = {'name':'lx', 'age':'18', 'job':'student']
2.字典的创建
(1)通过{}和dict()来创建字典对象
a = {'name':'gaoqi', 'age':18, 'job':'programmer')
b = dict(name = 'gaoqi', age = 18, job ='programmer')
a = dict([("name","gaoqi"), ("age",18)])
c = {} #空的字典对象
d = dict() #空的字典对象
(2)通过zip()创建字典对象
(3)通过fromkeys创建值为空的字典
二、字典中元素的访问、键的访问、值的访问和键值对的访问
1.通过[键]获得值
2.通过get()方法获得“值”
优点::指定键不存在,返回 None。也可以设定指定键不存在时默认返回的对象。推荐使用 get()获取“值对象".
3.列出所有的键值对
4.列出所有的键,列出所有的值
5.len()检测键值对的个数
6.检测一个“键”是否在字典中
三、字典元素添加、修改和删除
1.给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对”。
2.使用 update()将新字典中所有键值对全部添加到日字典对象上。如果 key 有重复,则直接覆盖。
3. 字典中元素的删除,可以使用del()方法;或者 clear()删除所有键值对;pop()删除指定键值对,并返回对应的“值对象”。
4.popitem():随机删除和返回该键值对。
字典是“无序可变序列”,因此没有第一个元素、最后一个元素的概念;popitem 弹出随机的项,因为字典并没有”最后的元素“或者其他有关顺序的概念。若想一个接一个地移除并处理项,这个方法就非常有效(因为不用首先获取键的列表)
四、序列解包用于列表元组字典
序列解包
序列解包用于字典时,默认是对“键”进行操作;如果需要对键值对操作,则需要使用items();如果需要对**“值”进行操作,则需要使用values()**;
五、字典的复杂表格数据存储、列表和字典综合嵌套
Quiz
姓名 | 年龄 | 薪资 | 城市 |
---|---|---|---|
htc | 18 | -100 | 哈尔滨 |
lx | 18 | 330000 | 厦门 |
wyp | 18 | 443000 | 北京 |
gdc | 18 | 450000 | 武汉 |
输出
六、字典的核心底层原理、内存分析、存储键值对过程、查找值对象过程
1.字典的核心底层原理
字典对象的核心是散列表。散列表是一个稀疏数组(总是有空白元素的数组),数组的每个单元叫做 bucket。每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引用。
由于,所有 bucket 结构和大小一致,我们可以通过偏移量来读取指定 bucket。
2.将一个键值对放进字典的底层过程
3.根据键查找“键值对”的底层过程
用法总结
- 键必须可散列
(1)数字、字符串、元组,都是可散列的。
(2)自定义对象需要支持下面三点:
① 支持 hash0函数
② 支持通过_eq_0方法检测相等性。
③ 若a==b为真,则hash(a) == hash(b)也为真。- 字典在内存中开销巨大,典型的空间换时间。
- 键查询速度很快
- 往字典里面添加新建可能导致扩容,导致散列表中键的次序变化。因此,不要在遍历字典的同时进行字典的修改。
七、集合
1. 集合
集合是无序可变,元素不能重复。实际上,集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复的且唯一的。
2.集合的创建和删除
(1)使用{}创建集合对象,并使用add()方法添加元素
(2)使用set(),将列表、元组等可迭代对象转成集合。如果原来数据存在重复数据,则只保留一个。
(3)remove()删除指定元素;clear()清空整个集合
2.集合相关操作
八、单分支选择结构和条件表达式详解
1.选择结构
选择结构通过判断条件是否成立,来决定执行哪个分支。选择结构有多种形式,分为:单分支、双分支、多分支。流程图如下:
2.单分支选择结构
3.条件表达式详解
4.补充
5. 双分支选择结构
6.三元条件运算符
7.多分支选择结构
8.选择结构的嵌套
九、while循环结构和死循环处理
1.循环结构
2. while循环