字典
字典是无序的,不可变数据类型
定义: 用于存储数据,存储大量数据 字典要比列表快,将数据和数据之间进行关联
定义一个字典
dic = {"常鑫":10,"李文虎":80,"张宇":90,10:"大黑哥"}
字典中逗号分隔是一个元素 "常鑫" (键) : 10 (值) 键值对应
字典的键
必须是可哈希的—— 不可变的数据类型(列表不可以)——避免哈希冲突,使用了开放寻址法2.不可哈希———可变的数据类型
3.要求唯一,如果有重复的后面的将前面的值覆盖
字典的值可以任意
增
(通过键去查)
1.暴力添加
dic = {"有":[1,2,3]}dic["李文虎"] = 89 结果:{'有': [1, 2, 3], '李文虎': 89}
李文虎这个键去字典进行查询,如果不存在执行添加,如果存在就不添加了
有:dic = {"有":[1,2,3],"李文虎":89}dic.setdefault("李文虎",100)结果: dic = {"有":[1,2,3],"李文虎":89}没有:dic = {"有":[1,2,3],}dic.setdefault("李文虎",100)结果:{'有': [1, 2, 3], '李文虎': 100}
dic.setdefault()
dic = {"有":[1,2,3],"李文虎":89}print(dic.setdefault("李文虎"))#结果 89 只有两种格式 还有 Noneprint(dic.setdefault("张宇")# None
删除
通过字典 的键删除值对
del dic["键"]
dic = {"有":[1,2,3],"李文虎":89}del dic["有"]print(dic)#结果{'李文虎': 89}
dic.pop("键")
dic = {"有":[1,2,3],"李文虎":89}dic.pop("有")print(dic)# 结果 {'李文虎': 89}
dic.clear
dic = {"有":[1,2,3],"李文虎":89}dic.clear()print(dic)# {}
改
当键在字典中存在就是修改(暴力修改)
dic = {"有":[1,2,3],"李文虎":89}dic["有"] = "dsb"print(dic)# {'有': 'dsb', '李文虎': 89}
字典中没有某个键时就是添加
dic = {"有":[1,2,3],"李文虎":89}dic["无"] = "dsb"print(dic)# {'有': [1, 2, 3], '李文虎': 89, '无': 'dsb'}
dic.update("要更新的字典")
括号里的级别高于 update 前面的字典 更新顾名思义就是将补充的填充到原来上面
D = {'one': 1, 'two': 2}D.update({'three': 3, 'four': 4}) # 传一个字典print(D)D.update([('seven', 7), ('eight', 8)]) # 传一个包含一个或多个元祖的列表print(D)#{'one': 1, 'two': 2, 'three': 3, 'four': 4}{'one': 1, 'two': 2, 'three': 3, 'four': 4, 'seven': 7, 'eight': 8}
查
利用 for 循环(循环获取的每个字典中对应的键)
dic = {"有":[1,2,3],"李文虎":89}for i in dic:print(i)#有李文虎
dic.get()
dic = {"有":[1,2,3],"李文虎":89}print(dic.get("李文虎"))#通过键获取值,存在返回键中对应的值# 89
dic = {"有":[1,2,3],"李文虎":89}print(dic.get("无")) #不存在返回 None# None
dic.get[]
存在的话和上面的()一样,如果不存在就会报错
其他操作
dic.keys()获取所有键,存放在高仿列表中,支持 for 循环,不支持索引.
dic = {"有":[1,2,3],"李文虎":89}print(dic.keys())# 结果: dict_keys(['有', '李文虎'])
支持 for 循环
dic = {"有":[1,2,3],"李文虎":89}for i in dic.keys():print(i)结果:有李文虎 类似于输出列表中的元素, 字典也可以
不支持索引直接报错
dic = {"有":[1,2,3],"李文虎":89}print(dic.keys()[0])结果报错
dic.values()获取字典中所有的值
dic = {"有":[1,2,3],"李文虎":89}print(dic.values())#dict_values([[1, 2, 3], 89])
dic.items()获取字典中所有键和值
dic = {"有":[1,2,3],"李文虎":89}print(dic.items())#dict_items([('有', [1, 2, 3]), ('李文虎', 89)])
解构
a,b = 10,12print(a)print(b) #相当于一个元组 #1012
a = 10b = 20a,b = b,aprint(a)print(b)#
列表a, b = [1,2]print(a)print(b)#12
元组a, b = (1,2)print(a)print(b)#等号前面的值要和等号后面的变量名要一一对应,不能多也不能少#12
字典a,b = {"1":"a","2":"b"}print(a)print(b)#12
dic = {"1":"a","2":"b"}for k,v in dic.items():print(k,v)#1 a2 b 循环获取字典中的每一个键和值
字典的嵌套
通过键一步一步查询
dic = {1001:["周杰伦","林俊杰"],1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},1004:{"韦小宝":[{"教主夫人":["教主"]},{"阿珂":"刺客"},{"双儿":"天地会"},{"爱心觉罗建宁":"公主"},{"独臂神尼":{"韦小宝师父":{"兰陵王":"隐身"},"花木兰":["唧唧复唧唧","木兰是战士",{"爸爸":["花和尚"]}]}},{"陈圆圆":"丈母娘"},{"穆建平":"小郡主"}]},1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]}}print(dic[1005]["常鑫"][-1])print(dic[1002]["汪峰"]["前妻2"][-1])print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])#井盖熊二隐身花和尚
如果觉得《字典的增删查改》对你有帮助,请点赞、收藏,并留下你的观点哦!