字典的增删改查和其他操作, 以及字典的嵌套
1.字典
字典是以key:value的形式来保存数据
用{}表示. 存储的是key:value
2. 字典的增删改查(重点)
① 添加
dic[新key] = 值
dic = {"意大利": "李云龙", "美国": "美国往事"} dic["日本"] = "东京审判" # 新key表示添加 dic['韩国'] = "釜山行"
setdefault()
setdefault (难点) # 有添加的功能,如果key是存在的. 不添加 # 流程: 判断你给的key是否在字典中存在了.如果已经存在了. 就不再新增. 如果不存在. 执行新增操作 dic.setdefault("美国", "三傻大闹宝莱坞") print(dic)
② 删除
pop(key)
dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"} dic.pop("郭德纲") # 你要记住的 dic.popitem() # 随机删除一项. 在python早期版本 字典是无序的. del dic["李安"] dic.clear() # 清空 print(dic)
③ 修改
dic[老key] = 值
update() 跟新字典
dic = {"河南":"胡辣汤", "开封": "灌汤包", "武汉":"热干面"} # # dic['河南'] = "烩面" # 老key = 值 # print(dic) # dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"} # dic2 = {"赵四":"宝宝", "刘能":"萌萌", "皮校长":"皮长山"} # # dic1.update(dic2) # 把dic2怼到dic1里面. 把dict2中的内容更新到dic1 # print(dic1) # print(dic2)
④ 查询
dic[key]
get(key, 值)
setdefault(key, value)
dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"} # 1. 直接使用key就可以拿到value # print(dic1["赵四四"]) # KeyError: '赵四四' key不存在 # 2. get(key) # print(dic1.get("刘能能")) # None 当key不存在返回None # print(dic1.get("刘能能", "没有这个人")) # 当key不存在. 返回第二个参数. 默认第二个参数是None # 3. setdefault() 第一个功能是添加(当key不存在). 第二个功能是查询(根据你给的key查询) # 整个执行流程: 判断给的key是否存在. 如果存在. 就不执行新增流程.直接查询出这个key对应的value # 如果key不存在. 先执行新增操作. 再使用key把对应的value查询出来 # ret = dic1.setdefault("皮长山", "皮校长") # print(ret) # 皮校长 # ret = dic1.setdefault("王木生", "宝宝") # print(ret) # 范伟
⑤ 遍历,
字典是一个可迭代对象
3. 字典的相关操作
① keys() 获取到所有的键
② values() 获取到所有的值
③ items() 拿到所有的键值对.
④ 字典的嵌套
字典的嵌套. 字典套字典
wf = { "name":"汪峰", "age":52, "hobby":["唱歌", "上头条", "穿皮裤"], "wife": { "name": "章子怡", "age": 49, "hobby":["演戏", "上电视", "当导师"], "tishen": { "name":"萌萌", "age":28 }, "zhuli":{ "name":"磊磊", "age": 20 } }, "zhuli":{ "name":"宝宝", "age":23, "hobby":["抽烟","喝酒","烫头"] }, "children":[{"name":"汪老大"}, {"name":"汪老二"}] } # wf['children'][1]["age"] = 2 # print(wf) # # print(wf['zhuli']['name']) # # # 汪峰老婆替身的名字 # print(wf['wife']['tishen']['name']) # # 汪峰老婆的第二个爱好 # print(wf['wife']['hobby'][1]) # # 汪峰助理的第三个爱好 # print(wf['zhuli']['hobby'][2]) # # # # 汪峰的助理+10岁 # wf['zhuli']['age'] = wf['zhuli']['age'] + 10 # # 汪峰的老婆添加一个爱好("导戏") # wf['wife']['hobby'].append("导戏") # 添加完毕了 # # 删除汪峰助理的"抽烟"爱好 # wf["zhuli"]["hobby"].remove("抽烟") # print(wf)
5. 集合(不重要). 去重复
集合中的元素是不重复的. 必须是可哈希的(不可变), 字典中的key
空集合:set()
空元组:tuple()
空列表:list()
非空集合: {123}集合, 集合其实就是不存value的字典
思考题:
字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....} (升级题) s = "k:1|k1:2|k2:3|k3:4" li = s.split("|") print(li) dic = {} for i in li: print(i) p = i.split(":") print(p) dic.setdefault(p[0],int(p[1])) print(dic)