字典
字典是“键值对”的无序可变序列,字典中每个元素包含“键对象”和“值对象”。
键是任意不可改变的数据:数、字符串、元组 。 列表等可变对象不行。
值可以是任意数据,并且可重复。
字典的创建 {}、dict()来创建字典对象
通过zip()创建字典对象
dict(zip())
fromkeys创建值为空的字典
dict.fromkeys()
字典元素的访问
通过[键]来获得“值”,键不存在返回错误
通过get()来获得值,键不存在返回None
获得所有键值对
a.items()
列出所有的键
a.keys()
列出所有的值
a.values()
len()键值对的个数
添加、修改、删除
update()将新字典中所有的键值对添加到旧字典对象上,如有重复直接覆盖。
删除使用del();clear()删除所有的键值对;pop()删除指定的键值对,并返回对应的值对象。
popitem()随机删除 列表中是删除最后一个 因为字典是无序的
序列解包用于列表元组字典
方便对多个变量赋值
字典默认是对键操作
eg:表格数据使用字典和列表存储,并实现访问(day4.py)
字典核心底层原理
字典对象的核心是散列表,散列表是一个稀疏数组(总是有空白元素的数组)
数组每个单元叫做bucket,包括两个部分:一个是键对象的引用,一个是值对象的引用
bucket的结构和大小一致,可以通过偏移量来读取指定bucket
存储和提取的底层逻辑
字典开销巨大,空间换时间
键查询速度快
添加新键可能导致扩容,导致次序变化
先遍历再对字典修改
集合
集合是无序可变,元素不能重复,集合底层是字典实现。
集合的所有元素都是字典的键对象,因此不能重复且唯一。
使用{}创建集合对象 ,add()方法添加元素
set()将列表、元组等可迭代对象转换成集合
remove() clear()
支持交集 并集 差集等操作(& | -)
第四章 控制语句
前面学的数据组织方式 变量、数据类型(整型、浮点型、布尔)、序列(字符串、列表、元组、字典、集合)
选择结构
单分支、双分支、多分支结构
if 条件表达式:
语句/语句块
条件表达式可以是 逻辑表达式、关系表达式、算术表达式
语句缩进必须保持一致
条件表达式为false的情况
False、0、0.0、空值none、空序列对象、空range对象、空迭代对象
赋值符不能出现在条件表达式
双分支
if 条件表达式:
语句1
else :
语句2
三元条件运算符
多分支结构
if 条件表达式1:
语句1
elif
条件表达式1:
语句2
...
else
条件表达式n:
语句n
最后一个else是可选的
多分支结构之间必须有逻辑关系,不能随便变换顺序
选择结构嵌套
注意缩进量
while循环结构
while 条件表达式:
循环体语句