2018.8.1笔记(字典的增删改查,操作,嵌套,)
一. 字典(字典在遍历时不能修改)
dict 用{}来表示 键值对数据 {key:value} 唯一性
键 都必须是可哈希的 不可变的数据类型就可以当做字典中的键
值 没有任何限制
二.字典的增删改查
1.增加
(1) dic[key] = value #强制增加
dic.setdefault(key,value) 如果键在字典中存在不进行任何操作,否则就添加
可以通过key查询,没有这个key返回None
例题: dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'} dic['火女'] = '人头狗' # 新增 print(dic) dic.setdefault('火女','安妮') # 如果在字典中存在就不进行任何操作,不存在就进行添加 dic.setdefault('火女','火男')
2.删除
pop(key) 有返回值 返回的是被删除value
del dic[key]
popitem() 随机删除
clear() 清空字典
例题: dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'} ret = dic.pop('易大师') #通过key删除 返回被删除的value print(ret) del dic['剑豪']#del 在字典里只能删除一个 或删除表(del dic) dic.clear() #清空字典 {} ret = dic.popitem() #随机删除 返回值 一个元组 (key,value) print(ret)
3.修改
dic[key] = value #强制修改
dic.update(字典)#更新
例题: dic['剑豪'] = '哈莎阁' # 强制修改 dic1 = {'火女':'安妮','火男':'布兰德','维恩':'暗影猎手','剑豪':'哈莎阁'} dic1.update(dic)# 用dic 去更新dic1 print(dic1)
4.查询
get(key)#没有这个键的时候查询会报错
dic[key]#没有返回None 可以指定返回内容
for 循环 元组 键 值 键值对
setdefault(key)#没有返回None 可以指定返回内容
例题: for i in dic: print(i) #for 循环默认是获取字典中的键 print(dic['易大师父']) #查看1 没有这个键的时候查询会报错 print(dic.get('易大师','你傻啊,没有!')) #查看2 没有返回None 可以指定返回内容 print(dic.setdefault('易大师范湖')) #查看3 没有返回None
三.字典的其他操作:
keys 获取到所有的键存在一个高仿的列表中
values 获取到所有的值存在一个高仿的列表中
items 获取到所有的键值对已元祖的形式存在一个高仿的列表中
例题: print(dic.keys()) # (高仿列表) print(dic.values()) # (高仿列表) print(dic.items()) for i in dic.keys(): print(i) for i in dic: print(i) #获取到字典中的每一个键 for i in dic.values(): print(i) #获取到字典中的每一个值 for i in dic.items():#键值对 print(i)
解构:
a,b = '12' #将后边解构打开按位置赋值给变量 支持 字符串 列表 元组 print(a) print(b) dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'} for a,b in dic.items(): print(a) print(b) a,b = 1, 2 a,b = (1,2) a,b = [1,2] 批量创建字典 dic1 = {} dics = dic1.fromkeys([1,2,3],'abc')
四. 字典的嵌套:
dic = { 'name':'汪峰', 'age':43, 'wife':{ 'name':'国际章', 'age':39, 'salary':100000 }, 'baby':[ {'name':'熊大','age':18}, {'name':'熊二','age':15}, ] } dic['baby'][0]['age'] = 19 print(dic)