目录
前言
Python提供了一种不同于列表和元组的,可以存储、查找信息的方式,叫字典。本文将学习如何访问和修改字典中的信息。
一、字典是什么?
1.建立一个字典
和列表与元组类似,字典也是一种存储信息的方式。与学习他俩的顺序类似,本文也先填鸭式介绍字典,从使用中总结内容。
Myself={'身高': 178, '体重': 160, '性别': '男'}
print(Myself['身高'])
print(Myself['性别'])
print(Myself['体重'])
这段代码,我们建立了一个字典“Myself”,它保存了作者本人的一些信息,比如身高体重和性别。然后利用三次打印函数输出出来结果,如下所示:
这段代码中的第一句,也就是赋值语句。将一个字典赋值给变量名“Myself”,
于是,Myself的种类变为字典(dict),长度(len)为3,包含了三组元素。
注意,这里似乎有六个字符或者整数型的数据,和三个冒号,却只有三组元素。
再仔细看看字典中的元素,
第一个元素 身高=178int。int的意思是整数,意思为身高的值为178.同理,体重的值为169,性别的值为字符(str)“男”。
找找规律:字典的元素用大括号包括起来。每一组冒号前后为字典的一个元素。冒号后面的内容是冒号前的值。
2.键值对
填鸭结束,相信读者一脸懵逼。
字典可以用来存储数据,它的存储格式为——key:value(键:值), 这样键和值通过冒号连接起来的组合,称为“键值对”。
其中:
key 必须是不可变的,一般使用字符串作为字典中的key,也可以使用数字等不可变类型的值。
key是唯一的 如果有多个相同的key的情况,保留最后一个key对应的值
value没有约束条件,可以是任意数据类型。
字典中存储的数据是没有顺序的。没有顺序,也就意味着没有索引一说。所以如果使用列表和元组的数字索引查找法是不行的。
运行如下代码:
Myself={'身高': 178, '体重': 160, '性别': '男'}
print(Myself[0])
会得到报错。
再看看上一小节的内容,要打印出第一个键值对的值,要使用print(Myself['身高']).
也即想要查找某个值(value),需要把与之对应的键(key)当作“索引”,来查找。
3.添加键值对
字典是一种动态结构,可随时在其中添加键值对。要添加键值对,可使用赋值语句,依次指定字典名、用方括号括起的键和相关联的值。
dict_name['key'] = value
如下所示:
Myself = {'身高': 178, '体重': 160, '性别': '男'}
print(Myself)
Myself['计算机成绩'] = 99
Myself['英语成绩'] = 59
print(Myself)
可以看出,通过赋值语言,给字典中增加了两组键值对。
有些时候,字典需要从零建立,这个时候需要预先建立一个空字典,然后一点点往里面增加。
建立空字典的方法和列表类似,都是直接赋值。
dict_name = {}
这样,就学会了如何从0开始,构建一个字典。
4.键值对的修改与删除
字典是可以修改的。随着现实世界的变化,很多时候需要修改字典中的键值对。修改键值对的思想和增加键值对类似,都是赋值。增加键值对是要赋一个新的值,修改键值对是改变原来的值。
Myself = {'身高': 178, '体重': 160, '性别': '男'}
print('我的体重为'+str(Myself['体重'])+'斤')
Myself['体重'] = 150
print('我现在的体重为'+str(Myself['体重'])+'斤')
如上代码,先建立一个Myself字典,然后打印出过去的体重,为160斤。但是随着时间发展,体重下降了。这时候将体重修改为150,重新打印现在的体重。
格式为:dict_name['key'] = new_value
值得注意的是,因为Myself字典中的key体重对应的value是160,为int整数型。而为了输出美观,使用了print的字符串拼接功能(str+str)。所以需要把体重的值从整数型改为字符型,使用str()语言即可。结果如下。
而对于字典中不要的信息,可以使用del语句将其相应的键值对删除。使用del语句时,必须指定字典名和要删除的键。格式如下:
del dict_name['key_YouWantToDelete']
del 字典名['需要删除的键名']
如下所示:
Myself = {'身高': 178, '体重': 160, '性别': '男'}
print(Myself)
del Myself['体重']
print(Myself)
可以看出,相应的“体重”这个键和它对应的值从字典中被删去了。
5.一个格式规范
有些时候,需要建立个非常大的字典。可以像上面那样放在一行,但是不够美观,而且显示不全。这时候就要分多行来建立字典。如下所示,先命名一个字典,然后打印出来语文考试的成绩。这里的字典和print()语句都用了多行来写。
Grades = {
'语文': 70,
'数学': 90,
'英语': 60,
'物理': 80,
'马哲': 85,
'计算机': 100
}
print('在2022年的考试中,本人的语文成绩为' +
str(Grades['语文']) + '。')
需要使用多行来定义字典时,在第一行等号之后,输入大括号,然后按回车键换行;再在下一行缩进四个空格,指定第一组键值对,同时在末尾加上逗号;此后再按回车,文本编辑器会自动产生缩进;然后再类似于第一组,编写第二组第三组,直到添加完所有的键值对;最后,再按回车,打上右括号,完成字典的建立。
二、如何遍历字典
字典中存储的元素是键值对,不同于列表那样的单个单元的元素。所以在遍历字典时,会有遍历键值对、遍历键、遍历值这三种不同的方法。
1.遍历键值对
还是用之前那个字典来举例子,如下方法,可以遍历键值对。
Grades = {
'语文': 70,
'数学': 90,
'英语': 60,
'计算机': 100
}
for subject, grade in Grades.items():
print('\n科目:', subject)
print('成绩:', grade)
然后通过item()方法,将字典Grades的某一个键值对取出,分别存放键和值。经过for循环,分别将字典Grades的键和值存入subject和grade这两个变量中。最后依次打印出来。
2.遍历字典的键
如果不需要字典中的值,可以使用keys()方法,只提取字典的键,如下所示:
Grades = {
'语文': 70,
'数学': 90,
'英语': 60,
'计算机': 100
}
print('本次考试涉及的科目有:')
for subject in Grades.keys():
print(subject)
使用keys()方法,可以只提取出键值对中的键,而不管值。然后再根据键得到自己想要的东西。如上,这里为了统计考试的科目,所以只需要键(subject科目),而不需要值(分数)。
另外!如果直接遍历字典,也会返回字典中元素的所有键。
例如把:for subject in Grades.keys():
修改为:for subject in Grades:
结果不变。
但是为了代码的可读性,最好还是注明。
3.遍历字典的值
如果不需要字典中的键,可以使用values()方法,只提取字典的值,如下所示:
Grades = {
'语文': 70,
'数学': 90,
'英语': 60,
'计算机': 100
}
for grade in Grades.values():
print(grade)
print('本次考试的总成绩为:', sum(Grades.values()))
使用values()方法,可以只提取出键值对中的值,而不管键。然后再根据键得到自己想要的东西。如上,这里为了计算所有课的总成绩,所以只需要值(分数grade),而不需要键(科目)。
总结
本文讲解了字典的基础用法。Python中的字典是一种很特殊的存储容器,它表达了一种互相连接的存储状态。本文学习了如何定义字典,以及如何使用存储在字典中的信息;如何访问和修改字典中的元素,以及如何遍历字典中的所有信息;如何遍历字典中所有的键值对、所有的键和所有的值。