一、字典dict
1 . 定义:用于数据存储,存储大量数据,字典比列表要快,将数据和数据之间进行关联
字典是无序的,可变的数据类型
用列表实现成绩
lst1=["常鑫","李文虎","张宇"]#姓名
lst2 = [10,80,100] 分数
print(lst[0],lst[1])
定义一个字典:
dic = {"常鑫"#键:10#值,"李文虎":80,"张宇":100}
字典中逗号分隔为一个元素
其他语言叫做键值对,python中叫做字典
字典的键:
- 必须是可哈希的——不可变数据类型——避免哈希冲突使用开放寻址法
- 不可哈希的——可变数据类型
- 要求唯一,如果有重复,后面的将覆盖前面的
字典的值:
- 可以任意
增:
dic = {"常鑫":[1,2,3]}
dic["李文虎"] = 89 暴力添加
dic. setdefault("李文虎",100)
#李文虎这个键去字典进行查询,如果不存在执行添加,如果存在就不添加
删除:
del dic["常鑫"]
print(dic)
pop:通过字典的键进行删除键值对
print(dic.pop("键”)) #返回的是被删除的值
print(dic)
clear
dic.clear() #清空
print(dic)
改:
dic["常鑫"] = "123" #字典中没有某个键对的时候就是添加,当键在字典中存在的时候就是修改
.update()
dicl.update(dic)
print(dic1)
查
dicl = {"1":3,"5":9,"李文虎":100}
for i in dicl #循环是获取字典对应的键
print(i)
print(dic.get("cx"))#通过键获取值,如果键不存在与字典中返回None
print(dic["cx"])#通过键获取值,如果键不在字典中报错
其他操作
获取所有的键和值
dicl = {"1":3,"5":9,"李文虎":100}
for i in dicl:
print(i,dicl.get(i)) #获取所有键和值
for i in dic.items():
print(i[0],i[1])
获取所有的键
print(dicl.keys()) #高仿列表——支持for循环不支持索引
for i in dic1.keys()#获取字典中所有的键
print(i)
list(dicl.keys()) #转换为真列表
获取所有的值
print(list(dicl.values())) #获取字典中所有的值并转为列表
lst = []
for i in dic1:
lst.append(dic1[i])
解构:
a,b = 10,12
print(a)
print(b)
a = 10
b = 20
a,b = b,a
print(a)
print(b) #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 = {"1":"a","2":"b"}
#print(a,b) # 打印字典中的键
for k,v in dic1.items():
print(k,v) # 获取每个元素的键和值
for i in dic1.items():
print(i)
字典的嵌套
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])