一. Hash
可变的数据类型是不可以被 Hash 的
如果一个值可以 Hash, 那么说明这是一个不可变的数据类型
二. 字典
字典是 python 中唯一的映射类型
定义: {key1:value1, key2:value2...}
1. 键与值用冒号分开
2. 项与项用逗号分开
特性: 1. key-value 结构
2. key 必须可 Hash, 且必须为不可变数据类型, 必须唯一
3. 可存放任意多个值, 可修改, 可以不唯一
4. 无序
已知可 Hash 的数据类型(不可变):int, str, tuple, bool
不可 Hash 的的数据类型(可变):list, dict, set
注意: key 必须是不可变的(可 Hash),value 没有要求, 可以保存任意类型的数据
三. 字典的增删改查和其他相关操作
不能切片
1. 增加
dic[""] ="" 如果 dict 中没有出现这个 key, 就会新增一个 key-value 组合
dic.setdefault("","")
如果 dic 中没有出现过这个 key-value, 可以通过 setdefault()设置默认值
如果已存在, 那么 setdefault 就不会起作用
2. 删除
dic.pop("","") 删除并返回 key 对应的 value
dic.popitem() 删除最后一项
dic.clear() 清空
del dic[""]
3. 修改
dic["old"] = "new" 用 new 代替 old
dic.update(dic2) 把 dic2 中的内容更新到 dic 中, 如果 key 重名, 则修改替换, 如果不存在 key, 则新增
4. 查询
一般用 key 来查找具体的内容
dic["key"] 如果 key 不存在, 则报错
dic.get(key, default == None) 返回字典中 key 对应的值, 如果 key 不存在, 则返回 default 值
dic.setdefault(key, value) 若 key 存在, 字节查询, key 不存在, 先添加, 再查询
5. 其他相关操作
dic.key() 返回一个包含字典所有 key 的列表
dic.value() 返回一个包含字典所以 value 的列表
dic.item() 返回一个包含所有 (键, 值) 元祖的列表
解构, 解包(列表, 元祖)
四. 字典的嵌套
字典里面套字典
五. 字典的遍历
1. 使用 for 循环直接遍历字典的 key
- for k in dic :
- print(k, dic[k])
2. 可以使用字典的 items()+ 解构可以直接获取到 key 和 value
- for k, v in dic.item() :
- print(k, v)
六. set 集合
由一个或多个确定的元素所构成的整体叫集合
集合是可变的数据类型, 所有不可 Hash
但是集合的元素必须是不可变的数据类型, 可以 Hash
所以集合不能互相嵌套
集合元素的 3 个特征:
1. 确定性(元素必须可 Hash)
2. 互异性(去重)
3. 无序性(集合中的元素没有先后之分)
来源: http://www.bubuko.com/infodetail-2867574.html