1. 什么是字典
字典是python中唯一的映射类型, 由{ } 括起来的键值对组成,在dict中key是唯一的.字典是以key:value的形式来保存数据, 字典存储数据的时候是用的hash值来存储. 算法不能变(python的)
数据必须是不可变的(可哈希). 字典的key必须是可哈希的(不可变).
已知的可哈希的(不可变)的数据类型: int , str , tuple , bool
不可哈希(可变)的数据类型: list , dict , set
语法:
dict = {key: value, key: value ... }
注意:
key必须是不可变(可哈希)的, value没有要求,可以保存任意类型的数据
2. 字典的增删改查
dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的. 而hash表不是连续的.
所以不能进行切片工作,它只能通过key来获取dict中的数据
1.增加
dic[key] = 值 dic.setdefault(key) dic = {} dic['name'] = '周润发' # 如果dict中没有出现这个key, 就会新增⼀个key-value的组 合进dict dic['age'] = 18 print(dic) # 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值 dic.setdefault('李嘉诚') # 也可以往⾯设置值. dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会 起作⽤ print(dic)
2.删除(pop , popitem 随机删除, clear 清空)
ret = dic.pop("joy") print(ret) del dic["jay"] print(dic) # 随机删除. ret = dic.popitem() # 清空字典中的所有内容 dic.clear()
3. 改 ( update )
.update() dic = {"id": 123, "name": 'sylar', "age": 18} dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"} dic.update(dic1) # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存 在key, 则新增. print(dic) print(dic1)
4. 查询
print(dic['name']) # print(dic['t']) # 报错 print(dic.get("ok")) print(dic.get("t")) # None print(dic.get("t", "⽜B")) # ⽜B
5. 字典的其他相关操作
. keys() 获取到所有的键 . values() 获取到所有的值 . items() 拿到所有的键值对 #解构, 注意数量必须匹配 a , b = 1, 2 print(a , b) (c , d) = 3 , 4 print( c , d)
3. 字典的嵌套
字典的嵌套. 字典套字典
# 字典的嵌套 .get(key) 根据key取value dic1 = { "name": "汪峰", "age": 18, "wife": { "name": '章子怡', "age": 28 }, "children": ['第一个毛孩子', '第⼆个毛孩子'], "desc": '峰哥不不会告我吧. 没关系. 我想上头条的' } print(dic1.get("wife").get("name")) print(dic1.get("children")) print(dic1.get("children")[1])
5. 集合(不重要). 去重复
集合中的元素是不重复的. 必须是可哈希的(不可变), 字典中的key
空集合:set()
空元组:tuple()
空列表:list()
非空集合: {123}集合, 集合其实就是不存value的字典
# 遍历字典两套方案 dic = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"} # 1. 使用for循环直接遍历字典的key # for key in dic: # print(key) # print(dic[key]) # 2. 可以使用字典的items()+解构可以直接获取到key和value # for k, v in dic.items(): # print(k) # print(v)