5.1 字典与集合
配套的 Python 教学视频
5.1.1 字典
什么是字典呢?它就是 一个 键值对 序列。
即 一个 键名 对应 一个 值。
比如说:
序列名 = {'华为':6988,'小米':1998,'苹果':5888}
我们如果 想要把 下标不用 数字表示,而是其它的 类型表示的话,就需要用到 字典。
print(序列名['华为']) 意思就是 键名为 华为的 对应的 值是什么
下标 也就被 键名 给代替了。
键值对呀是很重要的,在 我们 前端JS 里有一个 特殊的数据类型,JSON类型,它存储 数据的 格式 就是 键值对 格式的。而且 现如今 JSON 形式的数据 在网页上 几乎 到处可见。所以 做 WEB 开发的话,字典 必须是要 会用的。
① 修改或增加:
字典序列名[键] = 值
如果键不存在 则 直接添加这个键值对,如果键存在 则 修改这个 键的值。
② 删除数据:
del 字典[键]
删除某个键值对 del 字典名
删除整个字典
字典名.clear()
清空整个字典,但字典本身的架子 留下来了。
③ 查找数据
如果直接按照 字典[键]
的方式去查询的话,不存在 则会报错。
字典.get(键,默认值)
这种方式 进行 查找的话,找不到 的话 会返回你设定的默认值。
字典.values()
返回字典中所有的值
字典.items() 返回所有键值对
返回一个可迭代对象,即把每个 键值对都存到一个元组里,这些个元组 都放到一个 列表里。
④遍历字典的相关操作
遍历键名
for x in 字典.keys():
print(x)
遍历值 values
for x in 字典.values():
print(x)
遍历字典键值对的骚操作
键 和 值 居然 可以通过 python 的 For-Each 语句 单独的 区分取出。太牛逼了。。。
for 键,值 in 字典.items():
print(f'{键} = {值}')
5.1.2 集合
创建集合:可以用 {} 或 set() 创建集合,但是创建空集合 必须用 set()。
可能在这里 大家 搞不懂,{} 这个大括号 不是 创建 字典的嘛?
确实是!但是 {} 里面 是 键值对的时候,创建的是 字典。如果 不是 键值对,那么 创建的 就是集合了。
那为什么 空集合 又要 用 set() 方法 来建立呢,因为 代码分析器 没办法 分清 {} 到底是 集合 还是 字典,它会默认 当作 字典来处理,也就不能 创建空的集合了。
① 增加数据:
集合.add(数据)
如果添加的元素 在集合里 能找到,则不做任何操作。
集合.update(字符串or列表or元组)
添加一个 元组、列表、字符串。当然 添加字符串 它会 以 各个字符的形式去添加。因为 字符串 的原型 是 字符列表。
② 删除数据
集合.remove(数据)
如果数据不存在 会报错
集合.discard(数据)
如果数据不存在,不会报错,只是不做任何操作。
集合.pop()
pop 实际上是 弹出栈顶的,但是 这个结构是 集合。所以 是 弹出 任意一个数据,并且 返回这个数据。
③ 判断数据是否在集合中(因为根本没法取数据,所以只能判断集合里面是否有这个数据。)
数据 in 集合
判断数据是否在集合中
数据 not in 集合
判断数据是否不在集合中
④ 集合是由序列转换来的
set(任一类型的序列)
都可以把序列转为集合。
5.1.3 将学过的容器或类型进行分类
序列:序列是一个存放多个值的连续内存空间。
下标序列:支持下标的序列,可以用下标进行操作。切片操作等等。列表、元组、字符串
非下标序列:不支持 下标的序列。字典、集合
可变序列:元素可以进行增删改,改变之后 id 地址不会发生变化。列表、字典、集合
不可变序列:元素可以进行增删改,改变之后 id 地址 会发生变化。整型、浮点型、字符串、元组 ……