学习笔记(2024.08.03)

文章目录

学习笔记(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

姓名年龄薪资城市
htc18-100哈尔滨
lx18330000厦门
wyp18443000北京
gdc18450000武汉

请添加图片描述

输出
请添加图片描述

六、字典的核心底层原理、内存分析、存储键值对过程、查找值对象过程

1.字典的核心底层原理

字典对象的核心是散列表。散列表是一个稀疏数组(总是有空白元素的数组),数组的每个单元叫做 bucket。每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引用。
由于,所有 bucket 结构和大小一致,我们可以通过偏移量来读取指定 bucket。

2.将一个键值对放进字典的底层过程

请添加图片描述

请添加图片描述

3.根据键查找“键值对”的底层过程

请添加图片描述
请添加图片描述

用法总结

  1. 键必须可散列
    (1)数字、字符串、元组,都是可散列的。
    (2)自定义对象需要支持下面三点:
    ① 支持 hash0函数
    ② 支持通过_eq_0方法检测相等性。
    ③ 若a==b为真,则hash(a) == hash(b)也为真。
  2. 字典在内存中开销巨大,典型的空间换时间。
  3. 键查询速度很快
  4. 往字典里面添加新建可能导致扩容,导致散列表中键的次序变化。因此,不要在遍历字典的同时进行字典的修改。

七、集合

1. 集合

集合是无序可变,元素不能重复。实际上,集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复的且唯一的。

2.集合的创建和删除

(1)使用{}创建集合对象,并使用add()方法添加元素

请添加图片描述

(2)使用set(),将列表、元组等可迭代对象转成集合。如果原来数据存在重复数据,则只保留一个。

在这里插入图片描述

(3)remove()删除指定元素;clear()清空整个集合

在这里插入图片描述

2.集合相关操作

在这里插入图片描述

八、单分支选择结构和条件表达式详解

1.选择结构

选择结构通过判断条件是否成立,来决定执行哪个分支。选择结构有多种形式,分为:单分支、双分支、多分支。流程图如下:

在这里插入图片描述

请添加图片描述

2.单分支选择结构

请添加图片描述

3.条件表达式详解

请添加图片描述
请添加图片描述

请添加图片描述

4.补充

请添加图片描述

5. 双分支选择结构

请添加图片描述

6.三元条件运算符

请添加图片描述

7.多分支选择结构

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

8.选择结构的嵌套

请添加图片描述
请添加图片描述
请添加图片描述

九、while循环结构和死循环处理

1.循环结构

请添加图片描述

2. while循环

请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值