字典
字典 -- dict
字典是无序、是可变的数据类型
字典:用于存储数据,存储大量数据 字典要比列表快、将数据和数据之间进行关联
lst1 = ["宇霖", "伊琳", "张三"] # 姓名
lst2 = [100, 99, 59] # 分数
print(lst1[0], lst2[0])
定义一个字典:
dic = {"宇霖": 100, "伊琳": 99, "张三": 59}
字典中逗号分隔叫做一个元素 "宇霖"(键): 100(值) -- 键值对
dic = {"宇霖": 100, "伊琳": 99, "张三": 59, 10: "李四", True: 123, (1, 2, 3): "50"}
字典的键:
要求必须是可哈希的 -- 不可变的数据类型 -- 避免哈希冲突使用了开放寻址法
不可哈希的 -- 可变的数据类型
要求唯一 -- 如果有重复的后边值将前面的值覆盖
字典的值:
可以任意
增:
dic = {"宇霖": 100}
dic["伊琳"] = 99 # 暴力添加
print(dic)
dic = {"宇霖": 100}
dic.setdefault("伊琳", 99) # "伊琳"这个键去字典进行查询,如果不存在执行添加,如果存在就不添加
print(dic)
dic = {"宇霖": 100, "伊琳": 99}
print(dic.setdefault("伊琳")) # 若存在返回值,若不存在返回None
删除:
dic = {"宇霖": 100, "伊琳": 99}
del dic["宇霖"] # 通过字典的键删除键值对
print(dic)
dic = {"宇霖": 100, "伊琳": 99}
dic.pop("宇霖") # 通过字典的键删除键值对 返回值:返回的是被删除的值
print(dic)
dic = {"宇霖": 100, "伊琳": 99}
dic.clear() # 清空
print(dic)
改:
dic = {"宇霖": 100, "伊琳": 99}
dic["宇霖"] = "张三" # 字典中没有某个键值对的时候就是添加,当键在字典中存在的时候就是修改
print(dic) # 有则改,无则加
dic = {"宇霖": 100, "伊琳": 99}
dic.update({"1": 3, "5": 9, "伊琳": 100})
print(dic)
dic1 = {'宇霖': 100, '伊琳': 100, '1': 3, '5': 9}
dic1.update(dic) # update括号中的级别高于前update前面的字典
print(dic1)
查:
dic = {"宇霖": 100, "伊琳": 99}
for i in dic: # 循环获取的是字典中每个键值对的键
print(i)
推荐使用get
dic = {"宇霖": 100, "伊琳": 99}
print(dic.get("宇霖")) # 通过键获取值
dic = {"宇霖": 100, "伊琳": 99}
print(dic.get("xxx")) # 如果键不存在字典中返回None
dic = {"宇霖": 100, "伊琳": 99}
print(dic["宇霖"]) # 通过键获取值
dic = {"宇霖": 100, "伊琳": 99}
print(dic["xxx"]) # 如果键不存在字典中 报错
其他操作:
dic = {"宇霖": 100, "伊琳": 99}
for i in dic:
print(i, dic.get(i)) # 获取所有的键和值
dic = {"宇霖": 100, "伊琳": 99}
print(dic.keys()) # 高仿列表 -- dict_keys(['宇霖', '伊琳']) 支持for循环 不支持索引
dic = {"宇霖": 100, "伊琳": 99}
for i in dic.keys(): # keys获取字典中所有的键
print(i)
dic = {"宇霖": 100, "伊琳": 99}
lst=[]
for i in dic:
lst.append(dic[i])
dic = {"宇霖": 100, "伊琳": 99}
print(list(dic.values())) # values获取字典中所有的值
dic = {"宇霖": 100, "伊琳": 99}
print(dic.items())
dic = {"宇霖": 100, "伊琳": 99}
for i in dic.items():
print(i[0], i[1])
解构:
a, b = 10, 12
print(a)
print(b)
a = 10
b = 20
a, b = b, a
print(a)
print(b)
a, b = [1, 2]
print(a, b)
lst = [1, 2]
a = lst[0]
b = lst[1]
print(a, b)
a, b = (3, 4)
print(a, b) # 等号后边的值和前面的变量名要一一对应
a = 10, 12 # 本质就是一个元组
print(a)
a, b = "23"
print(a, b)
a, b = {"1": "a", "2": "b"}
print(a, b)
dic = {"宇霖": 100, "伊琳": 99}
for i in dic.items():
print(i[0], i[1])
dic = {"宇霖": 100, "伊琳": 99}
for k, v in dic.items(): # 获取每个元组的键和值
print(k, v)
字典的嵌套:
dic = {1001: ["周杰伦", "林俊杰"],
1002: {"汪峰": {"前妻1": ["儿子1"],
"前妻2": ["儿子2", "儿子3"],
"前妻3": "儿子4"}},
1003: {"陈冠希": ["阿娇", "阿萨", "张柏芝"]},
1004: {"韦小宝": [{"教主夫人": ["教主"]},
{"啊珂": "刺客"},
{"双儿": "天地会"},
{"爱新觉罗建宁": "建宁公主"},
{"独臂神尼": {"韦小宝师傅": {"兰陵王": "隐身"},
"花木兰": ["唧唧复唧唧", "木兰是战士", {"爸爸": ["花和尚"]}]}},
{"陈圆圆": "丈母娘"},
{"建平": "小郡主"}]},
1005: {"宇霖": ["1", "2", "3", "4", "5", "6"]}
}
print(dic[1004]["韦小宝"][0]["教主夫人"][0])
print(dic[1005]["宇霖"][-1])
print(dic[1002]["汪峰"]["前妻2"][-1])
print(dic[1004]["韦小宝"][-3]["独臂神尼"]["韦小宝师傅"]["兰陵王"])
print(dic[1004]["韦小宝"][-3]["独臂神尼"]["花木兰"][-1]["爸爸"])

浙公网安备 33010602011771号