一、字典
-
python的数据结构之一
-
字典 —— dict
-
定义:dic = {"key":"dajjlad"}
-
作用:存储数据,大量,将数据和数据起到关联作用
-
字典是可变的数据类型,无序的
-
所有的操作都通过键
# 键:必须是不可变的数据类型(可哈希),且唯一 不可哈希就是可变数据类型
# 值:任意
dic = {"10":"苹果手机", # 键 值 对
"11":"苹果手机",
"15”:"小米手机",
"15":"华为手机",
(1,):"oppo手机",
}
1.1字典的增:
-
暴力添加
dic = {'a': '上天', 'b': ['入地', '通幽'], 'c': '吃饭', 'd': '救苦救难'}
dic["二狗"] = "我的太阳" # 添加的是一个键值对
dic["腾格尔"] = ["来自草原的沙尘暴","音乐界的泥石流"]
# 新的键如果在字典中没有,那会添加到最后字典的后面;
# 如果有,那将新值替换旧值 -
有则不添加,无则添加
dict.setdefaullt(键,值)
dic = {'a': '上天', 'b': ['入地', '通幽'], 'c': '吃饭', 'd': '救苦救难'}
dic.setdefault("b",["沿着","江山","起起","伏"]) # 键存在,所以不添加
dic.setdefault("武器",["刀","枪","棍","棒","斧"])# 键为新,在最后一个键值对后面添加
# setdefault 添加分为2步:
# 1,先查看键是否在字典
# 2,不存在的时候进行添加
1.2字典的删除:
-
pop(键) —— 通过键删除,具有返 回值
dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}
dic.pop("1") # 删除了 "1":"上树" 这个键值对 -
clear() —— 清空
dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}
dic.clear() # 清空该字典,保留空字典 -
del —— 删除
del dict —— 删除的是容器
del dict["键"] —— 通过键删除
dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}
del dic # 删除的是整个字典
del dic["3"] # 只删除 "3":"开黑" 这个键值对
1.3字典的改
-
字典名[键] = 值
# 和字典的暴力添加一样
dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}
dic["2"] = "星宿老仙,法力无边" # 直接定位键,修改值 -
字典名.update(新字典)——在最后一个键值对后面,迭代添加
dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"}
dic1 = {"天山派":"星宿老仙,法力无边","少林":"龙抓手"}
dic.update(dic1)
print(dic) #{'1': '上树', '2': '遛狗', '3': '开黑', '4': '打团', '天山派': '星宿老仙,法力无边', '少林': '龙抓手'}
dic1.update(dic)
print(dic1)#{'天山派': '星宿老仙,法力无边', '少林': '龙抓手', '1': '上树', '2': '遛狗', '3': '开黑', '4': '打团'}
1.4字典的查
-
字典名.get(键,找不到的换回None)
dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"} print(dic.get("5")) # 返回 None print(dic.get("5","找不到啊")) # 返回 找不到啊 print(dic.get("2")) # 返回 遛狗
-
字典名.setdefault(键)
dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"} print(dic.setdefault("3")) # 返回开黑 print(dic.setdefault("77")) # 返回 None print(dic["4"]) # 也可直接查找,没有就是报错
-
-
字典名.keys() ——所有的键,获取到的是一个高仿列表
-
字典名.values() —— 所有的值,获取到的是一个高仿列表
-
intems() —— 键值
-
注意:高仿列表支持迭代,不支持索引
dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"} print(dic.keys()) # 所有的键,获取到的是一个高仿列表 print(dic.valuse()) # 所有的值,获取到的是一个高仿列表
-
-
-
for循环,返回的是字典的键
dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"} for i in dic: print(i) # 循环出的是字典的键
1.5解构
-
在字典中返回的是键
a,b = 1,2 print(a,b) # 结果: # 1 2 a,b = ('你好','世界') print(a,b) # 结果: # 你好 世界 a,b = ['你好','大飞哥'] print(a,b) # 结果: # 你好 大飞哥 a,b = {'汪峰':'北京北京','王菲':'天后'} print(a,b) # 结果: # 汪峰 王菲
-
解构在字典中的作用:
dic = {"1":"上树","2":"遛狗","3":"开黑","4":"打团"} for k,v in dic.items(): print('这是键',k) print('这是值',v) """ 结果: 这是键 1 这是值 上树 这是键 2 这是值 遛狗 这是键 3 这是值 开黑 这是键 4 这是值 打团 """
-
*__是一个万能值,万能接受
lis = [1,2,3,4,5,6,7,8]# 取出来1,2,5 a,b,c,d,e,*__ = lis print(a,b,e) # 结果 1 2 5
-
1.6字典的嵌套
dic = {11:{1:{"秦":"嬴政","秦二世","李斯","商鞅","章邯","蒙恬"},
2:{"汉":"刘邦","韩信","卫青","霍去病"}
3:{"三国":"魏","蜀","吴"}},
22:{1:{"歌唱家":{"刘欢":["我和你","弯弯的月亮"]}},
2:{"邓紫棋":["泡沫","喜欢你","天堂","光年之外"]},
3:{"腾格尔":["隐形的翅膀","卡路里","日不落"]}},
33:{1:{"蔡徐坤":{"唱":["鸡你太美"],"跳":["钢管舞"],"rap":["大碗面"],"篮球":("NBA形象大使")}},
2:{"JJ":{"行走的CD":["江南","曹操","背对背拥抱","小酒窝","不潮不花钱"]}},
3:{"Jay":{"周董":["菊花台","双节棍","霍元甲"]}}},
44:{1:{"韦小宝":{"双儿":"刺客","建宁":{"公主":{"吴三桂":"熊"}},"龙儿":{"教主老婆":"教主"}}}}
}
print(dic[201][1]["韦小宝"]["建宁"]["公主"]["吴三桂"])# 熊
print(dic[103][1]["蔡徐坤"]["跳"][0])# 钢管舞
print(dic[102][2]["邓紫棋"][1]) # 黑风雷