show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次学习了字典
- 字典可以更新
- update
- {**d1,**d2}
- 可以试着来
- 试着设置字典项
- setdefault
- 试着获取字典项
- get
- 字典还可以直接赋值
- 试着设置字典项
- 字典
- 本质上是键值对的集合
- 还是总结一下各种容器吧😱
- 这还真是一个大总结呢😱
- 来吧!
- 容器就是装东西的东西
- 瓶瓶罐罐之类的
- 里面放着各种菜
- 处理完了也放在容器里面
- 容器里面有容器怎么理解
- 比如这个托盘
- 盘子是菜的容器
- 托盘是盘子的容器
- 桌子是托盘的容器
- 厨房是桌子的容器
- python 编程中都有一些什么样的容器呢?
- 有颜色库其中有两个颜色
- 大红 0xff2121
- 石青 0x172234
- 我要把他做成一个字典
- 这里面制作了一个字典
- 字典有两个 key
- 大红
- 石青
- 这两个 key 各自对应一个 rgb 元素的元组
- 那这个字典应该如何引用呢?
- 可以把元组改成字典吗?
- 试试
- 这样是可以吗?
- 尝试调用
- 可以进行引用
- 这样就更加语义化了
- 结构非常明确
- 序列类
- 列表
- 元组
- 字符串
- 字节序列
- 集合类
- set 集合
- frozenset 冰封集合
- 字典类
- 字典 dict
- 从次序上来对比一下
- 序列类都是有顺序的
- sequence 就是序列
- 序列序列名字就带一个顺序的序
- 前后颠倒就不是这个顺序了
- 集合和字典呢?
- 集合类是没有顺序的
- 顺序并不影响对象本身
- 可变
- 列表
- 集合
- 字典
- 不可变
- 元组
- 字符串
- 字节序列
- 不可变集合
- 最后我们来个表格
类型名称 | 描述 | 是否可变类型 | 是否有顺序 | 举例 |
---|---|---|---|---|
列表 | list | 是 | 是 | [1,2,3]、["a","b"],list(1,2) |
元组 | tuple | 否 | 是 | (1,2) |
字符串 | str | 否 | 是 | "oeasy" |
字节序列 | bytes | 否 | 是 | b"oeasy" |
集合 | set | 是 | 否 | {1, 2, 3} |
不可变集合 | frozenset | 否 | 否 | frozenset([1,2,3]) |
字典 | dict | 是 | 否 | {'a':1,'b':2} |
- 关于不可变集合还有点疑问
- 不是说列表对象不可以作为集合项么?
- 为什么可以用 frozenset([1,2,3])这种形式?
- 列表元素不能作为集合的集合项
- 指的是下面这种情况
- 这其实指的是列表不能作为集合中的元素项
- 但是我们现在是把列表作为初始化集合的参数
- 列表就是一个iterable的对象
- 是可以作为集合构造函数的参数的
- 这是没有问题的
- 集合和字典都是大括号
- 他们之间是什么关系呢?
-
共同点
- 都是使用花括号{}将任意对象括起来的集合
- 他们都是无序的容器对象
- 都是一种可变的容器对象
-
不同点
- 字典
- 是由键值对(key-value)对组成的集合
- 键(key)是唯一的
- 如果键(key)重复的话
- 后面的键值对会替换前面的
- 值不需要唯一
- 列表和字典可以作为值(value)
- 字典支持使用key作为键进行索引
- 集合
- 没有key
- 也就不支持使用key作为下标索引
- 集合中的元素是唯一的
- 列表和字典不可以作为集合项
- 可用于元组或者列表中的元素去重
- 没有key
- 字典
-
可以把字典理解为一种特殊的集合
- 键值对的集合
- 不过可以从上图看出
- 字典才是python更常用的数据类型
- 这些就是我们接触到的各种容器
- 数据结构在程序流程里可以发挥重要的作用
- 什么是程序流程呢?🤔
- 下次再说 👋