1.什么是字典 字典是以key:value的形式来保存数据,用{}表示.   存储的是key:value 坑: 字典存储数据的时候是用的hash值来存储. 算法不能变(python的) # 数据必须是不可变的(可哈希). 字典的key必须是可哈希的(不可变). dic = {"jay":"周杰伦", "jj": "林俊杰", "jolin":"蔡依林"} print(dic['jay']) # 周杰伦 dic['jay'] = "麻花藤"       #字典的key是不变的,可以通过key来带出value的信息 2.字典的增删改查    1.增加,添加:    dic[新key] = 元素 dic = {"意大利": "李云龙", "美国": "美国往事"} dic["日本"] = "东京审判"  # 新key表示添加 dic['韩国'] = "釜山行 dic["日本"] = "鬼片"    setdefault()(难点)   有添加的功能,如果key是存在的,不添加,    setdefault("","") dic = {"意大利": "李云龙", "美国": "美国往事"} dic.setdefault("美国", "三傻大闹宝莱坞") print(dic)     2.删除     pop(key) 主要要记得,删除key后,同value一起删除掉 dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"} dic.pop("郭德纲") print(dic)     #{'张艺谋': '红高粱', '李安': '断臂山', '陈凯歌': '霸王别姬'}     popitem()   随机删除一项,在python早期的版本,字典是无序的 dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"} dic.popitem()   # 随机删除一项. 在python早期版本  字典是无序的. print(dic)   #{'张艺谋': '红高粱', '李安': '断臂山', '陈凯歌': '霸王别姬'}     clear()   清空字典中的所有内容     del dic["key"]    跟pop的区别在于使用的语法:pop(key) dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"} del dic["李安"] print(dic)   #{'张艺谋': '红高粱', '陈凯歌': '霸王别姬', '郭德纲': '祖宗十九代'}     3.修改 dic[老key] = 值 dic = {"河南":"胡辣汤", "开封": "灌汤包", "武汉":"热干面"} dic['河南'] = "烩面" # 老key = 值 print(dic)      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.查询      dic[key] dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}     #  直接使用key就可以拿到value  print(dic1["赵四四"]) # KeyError: '赵四四' key不存在      get(key,值)  print(dic1.get("刘能能"))  # None 当key不存在返回None  print(dic1.get("刘能能", "没有这个人")) # 当key不存在. 返回第二个参数. 默认第二个参数是None      setdefault("key","value")   第一个功能是天加(当key不存在的时候).   第二个功能是查询(根据你给的key查询).   如果key不存在,先执行新增的操作,在使用key把对应的value查询出来 3.字典的相关操作        1. keys() 获取到所有的键 dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"}  print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不⽤管它是什么.当 成list来⽤就⾏  for key in dic.keys():  print(key)         2. values() 获取到所有的值 dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"} for value in dic.values():  print(value)         3. items() 拿到所有的键值对 dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"}
print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age', 18), ('ok', '科⽐')]) 这个东⻄也是list. 只不过list中装的是tuple for key, value in dic.items(): # ?? 这个是解构  print(key, value) 4..字典的嵌套    
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         #在children里面新建字典{"age":"2"} print(wf) # print(wf['zhuli']['name'])         #输出名字 print(wf) # 汪峰老婆替身的名字 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.集合(不重要).去重复     唯一能用到的点,就是去重复 s = {"周润发", "大润发", "王润发", "周润发"} # 不重复的 print(s)      #{'大润发', '周润发', '王润发'} 集合和字典,是没有索引和切片的 集合中的元素是不可重复的.必须是可哈希的(不可变),字典中的key lst = ["麻将", "牌九", "骰子", "扑克", "骰子", "扑克", "扑克", "扑克"] #  把列表转化成集合  x 转化成y类型 y()  s = set(lst)  print(s) # 把集合变回列表 # lst = list(s) print(lst) # 顺序是乱的 空集合:set() 空元组: tuple() 空列表: list() 非空集合:{123} 新增:    add   添加    #需要记住的 s = {"刘嘉玲", "赵本山", "莱昂纳多迪卡普里奥", "罗纳尔多"} s.add("刘嘉玲")  print(s)    update   迭代更新 s.update({"刘嘉玲", "刘能", "赵四"}) # 迭代更新 print(s) 删除:  pop() 随机弹一个,随机删除 ret = s.pop() # 随机删除一个 print(s) print(ret)  remove()   指定删除 s.remove("罗纳尔多") print(s) 修改 :  只能先删除在添加  s = {"刘嘉玲", "赵本山", "莱昂纳多迪卡普里奥", "罗纳尔多"}  把罗纳尔多修改成梅西 s.remove("罗纳尔多") s.add("梅西") print(s)  
# 迭代 # for el in s: #     print(el)     # s1 = {"门神", "灯神", "灯神你在笑什么?"} # s2 = {"门神", "灯神", "你俩在干什么?"}   # 交集 # print(s1 & s2) # print(s1.intersection(s2))   # 并集 # print(s1 | s2) # print(s1.union(s2))   # # 差集 # print(s1 - s2) # s1中特有的内容 # print(s1.difference(s2)) # # # 反交集 # print(s1 ^ s2) # 两个集合中特有的内容 # print(s1.symmetric_difference(s2))   # 集合本身是可变的数据类型 . 不可哈希 # 集合套集合->不能互相嵌套的 # 集合中的元素必须可哈希(不可变的) # s = {123}   # 如果非要集合套集 # s = frozenset({"哈哈","呵呵"}) # 不可变的数据类型(集合) # for el in s: #     print(el)  
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄