python基础03/字典
python基础03/字典
内容大纲
1.字典
1.字典
字典是无序,可变的数据类型
字典:用于存储数据,储存大量数据,字典要比列表快
1.1 定义一个列表
lst1 = ["老大","老二","老三"] #姓名
lst2 = ["10","30","80"] #分数
print(lst1[0],lst2[0])
1.2 定义一个字典
dic = {"老大":10,"老二":30,"老三":80}
字典中逗号分隔叫做一个元素,"老大"(键):10(值)--键值对
dic = {10:23,True:34,(1,2,3,):45} #列表不可以当做键
print(dic)
1.3 字典的键
可哈希的--不可变的数据类型--避免哈希冲突使用了 开放寻址法
不可哈希的--可变的数据类型
要求唯一 --如果有重复的后边值的将前面的值覆盖
1.4 字典的值
可以任意
dic = {"常鑫":[1,2,3],"李文虎":80,"张宇":100,10:"大黑哥",True:123,(1,2,3):"大煎饼","常鑫":0.5}
print(dic)
1.5 增
dic = {"老大":[1,2,3],"老二":'89'}
dic["老二"] = 89
print(dic)
结果:{'老大': [1, 2, 3], '老二': 89} #将字符串'89'换成89
dic.setdefault("老三",100) ***注意中间是逗号
dic.setdefault("老二",90)
print(dic) 结果:{'老大': [1, 2, 3], '老二': '89'}
# 1.老二这个键去字典进行查询,如果不存在执行添加,如果存在就不添加
1.6 删
del dic[ ]
del dic["常鑫"] # 通过字典的键删除键值对
print(dic)
dic = {"老大":[1,2,3],"老二":'89'}
print(dic.pop("老大"))
print(dic)
结果:
[1, 2, 3] *****返回的是被删除的值
{'老二': '89'}
dic.pop()
#通过字典的键进行删除键值对
#返回值:返回的是被删除的值
dic.clear() #清空
dic = {"老大":[1,2,3],"老二":'89'}
dic.clear()
print(dic)
结果:
{}
1.7 改
dic["常鑫"] = "dsb"
字典中没有某个键值对的时候就是添加,当键在字典中存在的时候就是修改
print(dic)
#有则改 无则加
dic1.update(dic) #括号里边的必须是字典
# update括号中的字典级别高于update前面的字典
# print(dic1)
1.8 查
dic1 = {"1":3,"5":9,"李文虎":100}
for i in dic1:
循环获取的是字典中每个键值对的键
print(i)
结果:
1
5
李文虎
# print(dic.get("cx"))
# 通过键获取值,如果将不存在字典中返回None
# print(dic["cx"])
# 通过键获取值,如果将不存在字典中报错
1.9 其他操作
dic1 = {"1":3,"5":9,"李文虎":100}
for i in dic1:
print(i,dic1.get(i)) #获取所有的键和值
结果:
1 3
5 9
李文虎 100
# print(dic1.keys())
# 高仿列表 -- dict_keys(['1', '5', '李文虎'])
# 支持for循环 不支持索引
# for i in dic1.keys(): # 获取字典中所有的键
# print(i)
dic1 = {"1":3,"5":9,"李文虎":100}
# lst = []
# for i in dic1:
# print(i)
# lst.append(dic1[i])
# print(lst)
# 结果:
# 1
# 5
# 李文虎
# [3, 9, 100]
dic1 = {"1":3,"5":9,"李文虎":100}
# print(dic1.values()) #获取字典中所有值
# print(list(dic1.values())) #将获取到的字典中所有值放到列表中
# 结果:
# dict_values([3, 9, 100])
# [3, 9, 100]
dic1 = {"1":3,"5":9,"李文虎":100}
# print(dic1.items()) #获取字典中所有的键值对
# 结果:
# dict_items([('1', 3), ('5', 9), ('李文虎', 100)])
for i in dic1.items():
print(i[0],i[1])
结果:
1 3
5 9
李文虎 100
2.解构
# 解构
# a,b = 10,12
# print(a)
# print(b)
# a = 10
# b = 20
# a,b = b,a
# print(a,b)
# a,b = [1,2]
# print(a,b)
# a,b = (3,4)
# print(a,b)
# a,_,b = (3,4,5)
# print(a,b) # 等号后边的值和前面的变量名要一一对应
# a = 10,12 # 本质就是一个元组
# print(a)
# a,b = "23"
# print(a,b)
# a,b = {"1":"a","2":"b"}
# print(a,b)
# for i in dic1.items():
# print(i)
# for k,v in dic1.items():
# print(k,v) # 获取每个元素的键和值
3.字典的嵌套
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]) 花和尚
浙公网安备 33010602011771号