type
status
date
slug
summary
tags
category
icon
password
上次编辑时间
Jul 9, 2025 07:47 AM
comment
AI 总结
迄今为止,我们已经为大家介绍了 Python 中的三种容器型数据类型(列表、元组、集合),但是这些数据类型仍然不足以帮助我们解决所有的问题。例如,我们需要一个变量来保存一个人的多项信息,包括:姓名、年龄、身高、体重、家庭住址、本人手机号、紧急联系人手机号,此时你会发现,我们之前学过的列表、元组和集合类型都不够好使。
集合肯定是最不合适的,因为集合中不能有重复元素,如果一个人的年龄和体重刚好相同,那么集合中就会少一项信息;同理,如果这个人的手机号和紧急联系人手机号是相同的,那么集合中又会少一项信息。另一方面,虽然列表和元组可以把一个人的所有信息都保存下来,但是当你想要获取这个人的手机号或家庭住址时,你得先知道他的手机号是列表或元组中的第几个元素。总之,在遇到上述的场景时,列表、元组、集合都不是最合适的选择,此时我们需要字典(dictionary)类型,这种数据类型最适合把相关联的信息组装到一起,可以帮助我们解决 Python 程序中为真实事物建模的问题。
说到字典这个词,大家一定不陌生,读小学的时候,每个人手头基本上都有一本《新华字典》,如下图所示。

Python 程序中的字典跟现实生活中的字典很像,它以键值对(键和值的组合)的方式把数据组织到一起,我们可以通过键找到与之对应的值并进行操作。就像《新华字典》中,每个字(键)都有与它对应的解释(值)一样,每个字和它的解释合在一起就是字典中的一个条目,而字典中通常包含了很多个这样的条目。
创建和使用字典
Python 中创建字典可以使用
{}
字面量语法,这一点跟上一节课讲的集合是一样的。但是字典的{}
中的元素是以键值对的形式存在的,每个元素由:
分隔的两个值构成,:
前面是键,:
后面是值,代码如下所示。通过上面的代码,相信大家已经看出来了,用字典来保存一个人的信息远远优于使用列表或元组,因为我们可以用
:
前面的键来表示条目的含义,而:
后面就是这个条目所对应的值。当然,如果愿意,我们也可以使用内置函数
dict
或者是字典的生成式语法来创建字典,代码如下所示。想知道字典中一共有多少组键值对,仍然是使用
len
函数;如果想对字典进行遍历,可以用for
循环,但是需要注意,for
循环只是对字典的键进行了遍历,不过没关系,在学习了字典的索引运算后,我们可以通过字典的键访问它对应的值。字典的运算
对于字典类型来说,成员运算和索引运算肯定是很重要的,前者可以判定指定的键在不在字典中,后者可以通过键访问对应的值或者向字典中添加新的键值对。值得注意的是,字典的索引不同于列表的索引,列表中的元素因为有属于自己有序号,所以列表的索引是一个整数;字典中因为保存的是键值对,所以字典需要用键去索引对应的值。需要**特别提醒**大家注意的是,**字典中的键必须是不可变类型**,例如整数(`int`)、浮点数(`float`)、字符串(`str`)、元组(`tuple`)等类型,这一点跟集合类型对元素的要求是一样的;很显然,之前我们讲的列表(`list`)和集合(`set`)不能作为字典中的键,字典类型本身也不能再作为字典中的键,因为字典也是可变类型,但是列表、集合、字典都可以作为字典中的值,例如:
大家可以看看下面的代码,了解一下字典的成员运算和索引运算。
需要注意,在通过索引运算获取字典中的值时,如指定的键没有在字典中,将会引发
KeyError
异常。字典的方法
字典类型的方法基本上都跟字典的键值对操作相关,其中
get
方法可以通过键来获取对应的值。跟索引运算不同的是,get
方法在字典中没有指定的键时不会产生异常,而是返回None
或指定的默认值,代码如下所示。如果需要获取字典中所有的键,可以使用
keys
方法;如果需要获取字典中所有的值,可以使用values
方法。字典还有一个名为items
的方法,它会将键和值组装成二元组,通过该方法来遍历字典中的元素也是非常方便的。字典的
update
方法实现两个字典的合并操作。例如,有两个字典x
和y
,当执行x.update(y)
操作时,x
跟y
相同的键对应的值会被y
中的值更新,而y
中有但x
中没有的键值对会直接添加到x
中,代码如下所示。如果使用 Python 3.9 及以上的版本,也可以使用
|
运算符来完成同样的操作,代码如下所示。可以通过
pop
或popitem
方法从字典中删除元素,前者会返回(获得)键对应的值,但是如果字典中不存在指定的键,会引发KeyError
错误;后者在删除元素时,会返回(获得)键和值组成的二元组。字典的clear
方法会清空字典中所有的键值对,代码如下所示。跟列表一样,从字典中删除元素也可以使用
del
关键字,在删除元素的时候如果指定的键索引不到对应的值,一样会引发KeyError
错误,具体的做法如下所示。字典的应用
我们通过几个简单的例子来看看如何使用字典类型解决一些实际的问题。
例子1:输入一段话,统计每个英文字母出现的次数,按出现次数从高到低输出。
例子2:在一个字典中保存了股票的代码和价格,找出股价大于100元的股票并创建一个新的字典。
可以用字典的生成式语法来创建这个新字典。
总结
Python 程序中的字典跟现实生活中字典非常像,允许我们**以键值对的形式保存数据**,再**通过键访问对应的值**。字典是一种非常**有利于数据检索**的数据类型,但是需要再次提醒大家,**字典中的键必须是不可变类型**,列表、集合、字典等类型的数据都不能作为字典的键。