Python基础5_字典,集合
一. 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. 无序性(集合中的元素没有先后之分)