3.7字典:dict+菜中菜
1.简介
无序,可修改,用于存储数据,大量,比列表快,将数据和数据之间关联
定义:dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
逗号分割的是一个元素,'cx'(键):10(值) -- 键值对
字典的键:要使用不可变数据类型(可哈希)。要求键唯一,如果有重复的,后面的会将前面的覆盖。
可哈希的 -- 不可变的数据类型 - 避免哈希冲突使用了开放寻址法
不可哈希的 -- 可变的数据类型
字典的值可以任意。
2.字典的使用
1.增:
- 直增:dict1['li'] = 89
- dict1.setdefault('liw',100)#此方法按键去查字典是否有对应的键值对,如果没有,执行添加,如果有,则不添加,有返回值,原字典有,则返回值,没有返回None
dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}#1dict1['li'] = 89print(dict1)#2print(dict1.setdefault('liw'))dict1.setdefault('liw',100)print(dict1.setdefault('liw',100))print(dict1)
2.删:
del dict1['cx'] :通过查找字典的键删除键值对,如果没有会报错。
dict1.pop('cx'):通过字典的键删除键值对,返回被删除值
dict1.clear():清空
dict1 = {'cx':10,'liwenhu':80,'zhangyu':50,'wu':20}#1del dict1['cx'] print(dict1)#2dict1.pop('wu')print(dict1.pop('wu'))print(dict1)#3dict1.clear()print(dict1)
3.改:
dict1['cx'] = 'dsb' 通过键,如果原字典中没有此键对应的键值对,就是添加,如果有,就是修改
dict1.update(dict2) :update括号中的字典级别高于前边的字典(括号中放的是要跟新的字典)
dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}#2dict2.update(dict1)print(dict2)
4.查:
for 循环,获取的是键。
dict1.get('cx') :通过键获取值,如果没有会返回None
dict1['cx'] :通过键获取值,如果没有会报错。
dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}#1for i in dict1: print(i)#2 print(dict1.get('cx'))#3print(dict1['cx'])
5.字典的嵌套:
dic = {1001:["周杰伦","林俊杰"], 1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}}, 1003:{"陈冠希":["阿娇","阿萨","张柏芝"]}, 1004:{"韦小宝":[{"教主夫人":["教主"]}, {"阿珂":"刺客"}, {"双儿":"天地会"}, {"爱心觉罗建宁":"公主"}, {"独臂神尼":{"韦小宝师父":{"兰陵王":"隐身"},"花木兰":[ "唧唧复唧唧","木兰是战士",{"爸爸":["花和尚"]}] }}, {"陈圆圆":"丈母娘"},{"穆建平":"小郡主"}]}, 1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]} }# print(dic)# print(dic[1004]["韦小宝"][0]["教主夫人"][0])# print(dic[1005]["常鑫"][-1])# print(dic[1002]["汪峰"]["前妻2"][-1])# print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])# print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])
3.菜中菜:
1.高仿列表:
- dict1.keys():获取字典中所有的键
- dict1.vlaues():获取字典中所有的值
- dict1.items():获取字典中所有的键和值(键值对)
2.解构:
解构示意图:
a = 10
b = 12
a,b = b,a
dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}#1.键值对输出for i in dict1: print(i,dict1.get(i))print(dict1.keys())#2.高仿列表 ,支持for循环,不支持索引-- 结果:ict_keys([True, 'zhangyu', 'cx', 'liwenhu'])for i in dict1.keys(): print(i)#print(dict1.keys()[0])#3.dict1.values(),获取所有的值(可以转列表)print(dict1.values())print(list(dict1.values()))#4.dict1.items():获取键值对for i in dict1.items(): print(i)##解构for i,j in dict1.items():#解构输出键值对 print(i,j)#5.解构。a,b = 10 ,12print(a)print(b)a = 10b = 12a,b = b,aprint(a)print(b)a,b = [1,2]print(a,b)a,_,b = (3.4.5)#'_'无用,只为将不要的4赋值进去print(a,b)#等号后边的值与前边的变量数要一致a = 10,12print(a)#a是一个元组a,b ={'1':'a','2':b}print(a,b)#取到的是键