07.Python基础4
目录
字典
1.概述
2.如何用
3.基础操作
3.1添加元素
3.2定位元素
3.3删除元素
3.4遍历元素
3.5散列
4.字典推导式
字典
1.概述
适合存储有对应关系的数据,例如表格的标题名与行数据
2.如何用
(1)定义:由一系列键值对组成的可变散列容器
(2)语法:字典名 = {键1:值,键2:值}
(3)案例:
dict_bjlz = {
"name":"八角笼中","type":"剧情",
"actor":"王宝强","index":690761,
}
print(dict_bjlz)
3.基础操作
3.1添加元素
(1)作用:将键值对添加到字典中
(2)语法:字典名[键] = 值
(3)案例:
dict_bjlz = {
"name":"八角笼中","type":"剧情"
}
dict_bjlz["actor"] = "王宝强"
dict_bjlz["index"] = 690761
print(dict_bjlz)
3.2定位元素
(1)作用:改变或读取字典中某个键对应的值
(2)语法:字典名[键] = 值 值 = 字典名[键]
(3)案例:
dict_bjlz = {
"name":"八角笼中","type":"剧情"
}
dict_bjlz["actor"] = "王宝强"
dict_bjlz["index"] = 690761
print(dict_bjlz["name"])
print(dict_bjlz["index"])
(4)注意:键存在为修改,不存在为添加
3.3删除元素
(1)作用:通过键删除键值对
(2)语法:del 字典名[键]
(3)案例:
dict_bjlz = {
"name":"八角笼中","type":"剧情"
}
dict_bjlz["actor"] = "王宝强"
dict_bjlz["index"] = 690761
del dict_bjlz["name"]
print(dict_bjlz)
(4)注意:列表删除时元素向前移动,字典删除时其他元素不移动
3.4遍历元素
所有键
(1)作用:获取字典中所有键
(2)语法:
for key in 字典名:
变量key记录的是字典键
案例:
dict_bjlz = {
"name":"八角笼中","type":"剧情"
}
dict_bjlz["actor"] = "王宝强"
dict_bjlz["index"] = 690761
for item in dict_bjlz :
print(item)
# result
name
type
actor
index
所有值
(1)作用:获取字典中所有值
(2)语法:
for value in 字典名.values():
变量value记录的是字典值
(3)案例:
dict_bjlz = {
"name":"八角笼中","type":"剧情"
}
dict_bjlz["actor"] = "王宝强"
dict_bjlz["index"] = 690761
for item in dict_bjlz.values() :
print(item)
# result
八角笼中
剧情
王宝强
690761
所有键和值
(1)作用:获取字典中所有值
(2)语法:
for key,value in 字典名.items():
变量key,value分别记录的是字典的键和值
(3)案例:
dict_bjlz = {
"name":"八角笼中","type":"剧情"
}
dict_bjlz["actor"] = "王宝强"
dict_bjlz["index"] = 690761
for item in dict_bjlz.items() :
print(item)
print(type(item))
# result
('name', '八角笼中')
('type', '剧情')
('actor', '王宝强')
('index', 690761)
<class 'tuple'>
3.5散列
(1)定义:通过哈希算法将键转换为对应存储位置的容器类型
(2)特点1:无需遍历,直接计算存储位置,速度最快
list_movie = [("八角笼中","剧情"),("消失的她","犯罪")]
for item in list_movie:
if item[0] == "消失的她":
print(item[1])
dict_movie = {"八角笼中":"剧情","消失的她":"犯罪"}
print(dict_movie["消失的她"])
特点2:键必须唯一且只能是不可变类型的数据
dict_movie = {"剧情":"八角笼中","剧情":"满江红"}
print(dict_movie) # {"剧情":"满江红"}
# TypeError: unhashable type: 'list'
dict_movie = {["王宝强","陈永胜"]:"八角笼中"}
(3)缺点:在内存中元素没有顺序且占用空间较大
4.字典推导式
(1)定义:通过简单的语法将可迭代对象转换为新字典
(2)作用:简化代码,避免了传统循环结构的繁琐,提高代码的可读性
(3)语法:
新字典 = [键:值 for 变量 in 可迭代对象]
新字典 = [键:值 for 变量 in 可迭代对象 if 条件]
(4)案例:将2个列表合并为一个字典
list_name = ["八角笼中","封神第1部","消失的她"]
list_pop = [921109,826748,189298]
list_movies={
list_name[i]: list_pop[i] for i in range(len(list_name))
}
(5)适用条件:根据可迭代对象、构建新字典、过程够简单
(6)不适用:
# 不支持while
dict_new = {}
while True:
item = input("请输入:")
dict_new[item] = item * 2
# 必须是空字典
dict_new = {5:25}
for num in range(5):
dict_new[num] = num * 2
# 不能有多余代码
dict_new = {}
for num in range(5):
dict_new[num] = num * 2
print(num)
(7)练习:使用字典推导式,颠倒字典的键和值
dict_info = {
"1001": "台湾",
"1002": "陕西",
"1003": "浙江",
"1004": "广西",
}
dict_info_new = {v: k for k, v in dict_info.items()}
print(dict_info_new)