数据容器-字典
为什么要使用字典?
就像字典一样根据拼音查找字,Python中的字典就是根据Key查找Value。
字典的定义:
#定义一个字典
my_dict1={"王力鸿":99,"周杰轮":88,"林俊节":77}
#定义空字典
my_dict2={}
my_dict3=dict()
print(f"字典1的内容是:{my_dict1},类型是{type(my_dict1)}")
print(f"字典2的内容是:{my_dict2},类型是{type(my_dict2)}")
print(f"字典3的内容是:{my_dict3},类型是{type(my_dict3)}")
结果:
字典1的内容是:{'王力鸿': 99, '周杰轮': 88, '林俊节': 77},类型是<class 'dict'>
字典2的内容是:{},类型是<class 'dict'>
字典3的内容是:{},类型是<class 'dict'>
字典和集合一样不能使用下标索引,不支持重复的Key,取值方式如下。
#定义重复Key的字典
my_dict1={"王力鸿":99,"王力鸿":88,"林俊节":77}
print(f"重复Key的字典的内容是:{my_dict1}")
#从字典中基于Key获取Value
my_dict1={"王力鸿":99,"周杰轮":88,"林俊节":77}
score=my_dict1["王力鸿"]
print(f"王力鸿的考试分数是:{score}")
score=my_dict1["周杰轮"]
print(f"周杰轮的考试分数是:{score}")
结果:
重复Key的字典的内容是:{'王力鸿': 88, '林俊节': 77}
王力鸿的考试分数是:99
周杰轮的考试分数是:88
字典的嵌套:
字典的Key和Value可以是任意数据类型(Key不可为字典)
那么就表明字典可以嵌套的。
可以这么理解,外层Key是姓名对应的Value是字典数据类型,然后内层字典的Key对应的是学科Value对应的是分数。
示例:
#定义嵌套字典
stu_score_dict={
"王力鸿":{
"语文":77,
"数学":66,
"英语":33,
},"周杰轮":{
"语文":88,
"数学":86,
"英语":55,
},"林俊节":{
"语文":96,
"数学":99,
"英语":66,
}
}
print(f"学生考试的信息是:{stu_score_dict}")
#从嵌套的字典中读取信息
#看周杰轮的语文信息
score=stu_score_dict["周杰轮"]["语文"]
print(f"周杰轮的语文分数是:{score}")
score=stu_score_dict["林俊节"]["英语"]
print(f"林俊节的英语分数是:{score}")
结果:
学生考试的信息是:{'王力鸿': {'语文': 77, '数学': 66, '英语': 33}, '周杰轮': {'语文': 88, '数学': 86, '英语': 55}, '林俊节': {'语文': 96, '数学': 99, '英语': 66}}
周杰轮的语文分数是:88
林俊节的英语分数是:66
字典的常用操作
1.字典的新增元素及更新元素
语法结构:
字典[Key]=Value
如果字典中没有该元素,就添加该元素,即新增元素。
如果字典中已经有了该元素,字典的Key不可以重复,如果对已有的元素执行以上操作,就是更改该元素,即更新元素。
示例:
my_dict={"周杰轮":99,"林俊节":88,"张学油":77}
#新增元素
my_dict["张信哲"]=66
print(f"字典经过新增元素后为:{my_dict}")
#更新元素
my_dict["周杰轮"]=33
print(f"字典经过更新后字典为:{my_dict}")
结果:
字典经过新增元素后为:{'周杰轮': 99, '林俊节': 88, '张学油': 77, '张信哲': 66}
字典经过更新后字典为:{'周杰轮': 33, '林俊节': 88, '张学油': 77, '张信哲': 66}
2.字典的删除元素
语法结构:
字典.pop(Key)
结果:获得指定Key的元素,并且删除。
示例:
#删除元素
score=my_dict.pop("周杰轮")
print(f"字典中被移除了一个元素,结果:{my_dict},周杰轮的考试分数:{score}")
结果:
字典中被移除了一个元素,结果:{'林俊节': 88, '张学油': 77, '张信哲': 66},周杰轮的考试分数:33
3.字典的清空元素
语法结构:
字典.clear()
示例:
#清空元素,clear
my_dict.clear()
print(f"字典被清空后的结果是:{my_dict}")
结果:
字典被清空后的结果是:{}
4.获取全部的Key
这个方法可以帮助我们遍历字典。
语法结构:
字典.keys()
示例:
#获取全部的key
my_dict={"周杰轮":99,"林俊节":88,"张学油":77}
keys=my_dict.keys()
print(f"字典的全部keys是:{keys}")
结果:
字典的全部keys是:dict_keys(['周杰轮', '林俊节', '张学油'])
5.遍历字典
方式1
通过获取所有的key,使用.keys()函数。
示例:
#遍历字典
for key in keys:
print(f"字典的key是:{key}")
print(f"字典的value是:{my_dict[key]}")
结果:
字典的key是:周杰轮
字典的value是:99
字典的key是:林俊节
字典的value是:88
字典的key是:张学油
字典的value是:77
方式2
直接使用for循环遍历,因为不能使用下标索引,所以不能使用while循环遍历
示例
#直接遍历
for key in my_dict:
print(f"2字典的key是:{key}")
print(f"2字典的value是:{my_dict[key]}")
结果:
2字典的key是:周杰轮
2字典的value是:99
2字典的key是:林俊节
2字典的value是:88
2字典的key是:张学油
2字典的value是:77
6.统计字典内的元素数量
语法结构:
变量=len(字典)
示例:
#统计字典内的元素数量,len()函数
num=len(my_dict)
print(f"字典中的元素数量有:{num}个")
结果:
字典中的元素数量有:3个
字典常用操作总结:
字典总结:
字典练习:
对级别1的员工升职到级别2,加薪1000。
my_dict={
"王力鸿":{
"部门":"科技部",
"工资":3000,
"级别":1
},"周杰轮":{
"部门":"市场部",
"工资":5000,
"级别":2
},"林俊节":{
"部门":"市场部",
"工资":7000,
"级别":3
},"张学油":{
"部门":"科技部",
"工资":4000,
"级别":1
},"刘德滑":{
"部门":"市场部",
"工资":6000,
"级别":2
}
}
print(f"全体员工当前信息如下:")
print(my_dict)
for key in my_dict:
if my_dict[key]["级别"]==1:
employee_info_dict=my_dict[key]
employee_info_dict["级别"]=2
employee_info_dict["工资"]+=1000
my_dict[key]=employee_info_dict
print(f"对员工进行升职加薪之后的结果是:\n{my_dict}")
结果:
全体员工当前信息如下:
{'王力鸿': {'部门': '科技部', '工资': 3000, '级别': 1}, '周杰轮': {'部门': '市场部', '工资': 5000, '级别': 2}, '林俊节': {'部门': '市场部', '工资': 7000, '级别': 3}, '张学油': {'部门': '科技部', '工资': 4000, '级别': 1}, '刘德滑': {'部门': '市场部', '工资': 6000, '级别': 2}}
对员工进行升职加薪之后的结果是:
{'王力鸿': {'部门': '科技部', '工资': 4000, '级别': 2}, '周杰轮': {'部门': '市场部', '工资': 5000, '级别': 2}, '林俊节': {'部门': '市场部', '工资': 7000, '级别': 3}, '张学油': {'部门': '科技部', '工资': 5000, '级别': 2}, '刘德滑': {'部门': '市场部', '工资': 6000, '级别': 2}}
不积跬步无以至千里,不积小流无以成江海。