Python教程

零基础Python完全自学教程17:Python中的字典完全解读

本文主要是介绍零基础Python完全自学教程17:Python中的字典完全解读,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第17课《 Python中的字典完全解读》。本节课是一个大课,我分了这些知识点进行详细讲解:1、python中字典的概念、特征、创建和删除详解。2、在Python中访问字典详解。3、在Python中遍历字典的三大方法详解。4、在Python中添加、修改、删除和更新字典元素详解。5、Python中的字典推导式详解。

目录

17.1、python中字典的概念、特征、创建和删除详解

17.1.1、字典的概念

17.1.2、字典的主要特征

17.1.3、字典的创建

17.1.3.1、创建空字典

17.1.3.2、直接赋值创建字典

17.1.3.3、通过给定的“键值对”创建字典

17.1.3.4、通过二元组列表创建

17.1.3.5、通过映射函数创建字典

17.1.3.6、通过dict对象的fromkeys()方法创建字典。

17.1.3.7、通过字典推导式创建

17.1.3.8、其他方法

17.1.4、字典的删除

17.2、在Python中访问字典详解

17.2.1、使用print()函数访问字典

17.2.2、使用字典对象的get()方法访问字典

17.3、在Python中遍历字典的三大方法详解

17.3.1、使用字典对象的items()方法可以遍历字典的项和字典的“键-值对”。

17.3.2、使用字典对象的keys()方法可以获取字典的“键”序列。

17.3.3、使用字典对象的values()方法可以获取字典的“值”序列。

17.4、在Python中添加、修改、删除和更新字典元素详解

17.4.1、在Python中添加字典元素。

17.4.2、在Python中修改字典元素。

17.4.3、在Python中删除字典元素。

17.4.3.1、使用del命令删除指定元素

17.4.3.2、使用clear()方法清空字典元素

17.4.3.3、使用pop()方法删除字典中指定的元素

17.4.3.4、使用popitem() 方法删除字典中最后一个键值对。

17.4.4、在Python中更新字典元素。

17.4.4.1、当update() 给定的键值对,在原字典不存在时,就会增加字典元素;

17.4.4.2、当update() 给定的键值对,在原字典存在时,就会修改字典元素;

17.5、Python中的字典推导式详解

17.5.1、生成指定范围的数值字典。语法格式如下:

17.5.2、使用字典推导式也可以根据列表生成字典。


17.1、python中字典的概念、特征、创建和删除详解

在前面的Python课程学习中,我们学到了序列中的列表和元组,今天开始讲解序列的另一个常用数据结构--字典。

17.1.1、字典的概念

字典(dictionary)是无序的、可变的、保存的内容是以“键-值对”的形式存储的序列。

我们怎么去理解Python中的字典呢?我们读小学的时候,都用过《新华字典》,在《新华字典》中通过拼音或者部首,我们可以快速的查到对应的文字和解释。其中,《新华字典》里的拼音或者部首相当于Python中字典的键(key),而对应的汉字和解释相当于Python中字典的值(value)。键是唯一的,而值可以有多个。键及其关联的值称为“键值对”。

17.1.2、字典的主要特征

字典的主要特征如下:

17.1.2.1、通过键而不是通过索引来读取

字典有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。

17.1.2.2、字典是任意对象的无序集合

字典是无序的,各项是从左到右随机排序的,即保存在字典中的项没有特定的顺序。这样可以提高查找顺序。

17.1.2.3、字典是可变的,并且可以任意嵌套

字典可以在原处增长或者缩短(无须生成一份拷贝),并且它支持任意深度的嵌套(即它的值可以是列表或者其他的字典)。

17.1.2.4、字典中的键必须唯一

不允许同一个键出现两次,如果出现两次,则后一个值会被记住。

17.1.2.5、字典中的键必须不可变

字典中的键是不可变的,所以可以使用数字、字符串或者元组,但不能使用列表。

和列表、元组一样,字典也有它自己的类型。在 Python 中,字典的数据类型为 dict,通过type()函数即可查看:

a = {'A': 1, 'B': 2, 'C': 3}  #a是一个字典类型
print(type(a))

运行结果如下:

<class 'dict'>
>>> 

17.1.3、字典的创建

我们在定义字典时,每个元素都包含了两部分:键(key)和值(value),并且在“键”和“值”之间使用英文冒号分隔,相邻两个元素使用英文逗号分离,所有的元素都放在一个大括号“{}”中,语法格式如下:

dictionary = {'key1':'value1', 'key2':'value2', ..., 'keyn':'valuen',}

其中,相关的参数值如下:

dictionary:表示字典名称;

key1, key2, ..., keyn:表示元素的键,必须是唯一的,并且不可变,例如可以是字符串、数字或者元组;

value1, value2, ..., valuen:表示元素的值,可以是任何数据类型,不是必须唯一。

例如,某中学初三1班,M同学的语数英的成绩,用字典保存,代码如下:

chengji = {'语文':'88','数学':'96','英语':'86'}
print(chengji)

运行结果如下:

{'语文': '88', '数学': '96', '英语': '86'}
>>> 

好了,简单的讲解了一下字典的语法,下面站长在线来给大家谈谈创建字典的8大方法:

17.1.3.1、创建空字典

字典和列表,元组一样都是可以创建空值的序列。在Python中,创建空字典居然还有两个方法:dictionary = {} 或者 dictionary = dict()

示例3.1.1:用dictionary = {} 方法创建空列表,输出结果,并打印数据类型

dictionary = {}
print(dictionary)
print("dictionary的数据类型为:",type(dictionary))

运行结果如下:

{}
dictionary的数据类型为: <class 'dict'>
>>> 

示例3.1.2:用dictionary = dict()方法创建空列表,输出结果,并打印数据类型

dictionary = dict()
print(dictionary)
print("dictionary的数据类型为:",type(dictionary))

运行结果如下:

{}
dictionary的数据类型为: <class 'dict'>
>>> 

17.1.3.2、直接赋值创建字典

上面的,某中学初三1班,M同学的语数英的成绩,保存为字典就是直接赋值创建字典。

chengji = {'语文':'88','数学':'96','英语':'86'}
print(chengji)

运行结果如下:

{'语文': '88', '数学': '96', '英语': '86'}
>>> 

17.1.3.3、通过给定的“键值对”创建字典

语法格式如下:

dictionary = dict(key1=value1,key2=value2,...,keyn=valuen)

其中,相关参数如下:

dictionary:表示字典名称;

key1, key2, ..., keyn:表示元素的键,必须是唯一的,并且不可变,例如可以是字符串、数字或者元组;

value1, value2, ..., valuen:表示元素的值,可以是任何数据类型,不是必须唯一。

示例3.3:

a = dict(A = 1, B = 2, C =3)
print(a)

运行结果为:

{'A': 1, 'B': 2, 'C': 3}
>>> 

17.1.3.4、通过二元组列表创建

定义一个二元组列表并且赋值,

list = [('A', 1), ('B', 2), ('C', 3)]
a = dict(list)
print(a)

运行结果为:

{'A': 1, 'B': 2, 'C': 3}
>>> 

17.1.3.5、通过映射函数创建字典

语法如下:

dictionary = dict(zip(list1,list2))

其中,相关参数说明如下:

dictionary:表示字典名称。

zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。如果想得到元组,可以将zip对象使用tuple()函数转换为元组;如果想得到列表,则可以使用list()函数将其转换为列表。

list1:表示一个列表,用于指定要生成字典的键。

list2:表示一个列表,用于指定要生成字典的值。如果list1和list2的长度不同,则与最短的列表长度相同。

示例3.5:某高校寝室住着4大美女,将他们的名字保存在一个列表中,相应的年龄保存在另一个列表中,根据名字和年龄创建一个字典。

思路:在IDLE中,我们打开草稿文件000.py,先定义两个均包含4个元素的列表,在应用dict()函数和zip()函数,将两个列表转化为对应的字典,并输出该字典。

name = ['美琳','梦洁','雪丽','美莲']
age = [18,19,19,18]
a = dict(zip(name,age))
print(a)

运行结果为:

{'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
>>> 

17.1.3.6、通过dict对象的fromkeys()方法创建字典。

Python 中,还可以使用 dict 字典类型提供的 fromkeys() 方法创建带有默认值的字典,具体格式为:

dictionary = dict.fromkeys(list,value=None)

其中,list 参数表示字典中所有键的列表(list);value 参数表示默认值,如果不写,则为空值 None。

kemu = ['语文', '数学', '英语']   #作为键的列表
a = dict.fromkeys(kemu, 100)      #指定科目的默认成绩为100
print(a)

运行结果如下:

{'语文': 100, '数学': 100, '英语': 100}
>>> 

17.1.3.7、通过字典推导式创建

(字典的最后一个知识点再详细讲解字典推导式)

a = {i:2*i for i in range(3)}
print(a)

运行结果如下:

{0: 0, 1: 2, 2: 4}
>>> 

17.1.3.8、其他方法

list = ['A', 1, 'B', 2, 'C', 3]
a= dict(zip(list[::2], list[1::2]))
print(a)

运行结果:

{'A': 1, 'B': 2, 'C': 3}
>>> 

17.1.4、字典的删除

同列表和元组一样,不再需要的字典也可以使用del命令删除。例如,通过下面的代码即可将已经定义的字典删除。

del dictionary

另外,如果只是想删除字典的全部元素,可以使用字典对象的clear()方法。执行clear()方法后,原字典将变为空字典。例如,下面的代码将清除字典的全部元素。

dictionary.clear()

除了上面介绍的方法可以删除字典元素,还可以使用字典对象的pop()删除并返回指定“键”的元素,以及使用字典对象的popitem()方法删除并返回字典中的一个元素。

17.2、在Python中访问字典详解

由于昨天上午在做其他的,下午开始更新教程,一直到了网上12点都没有完成,因为做的是小白的新手教程,需要参考很多的资料,才能完成课程的编写。等我在网站和各个平台发布的时候,全部都是16日的凌晨发布的,相当于11月15日着24个小时,没有更新一篇文章。

从今以后要吸取教训,尽可能的在上午,至少就要在下午就要完成教程的更新。当然除了Python的新手教程更新以外,还要着手更新html、CSS、JavaScript、 php、Vue等教程,那样我争取在明年年底的时候,开发出自己的建站CMS,让更多的人免费的使用到更好的CMS系统,让想在自己行业深耕的人,搭建好自己的 知识体系,服务好自己的客户。

为什么我要一边学习一边更新免费的小白教程呢?因为我希望所有的人和我一样,可以通过学习新手教程,能够完成和我一样的学习效果,在整个网络上面,几乎没有系统的图文教程。当然,视频教程很多,很多公司都出了自己的完整的视频教程。拿新手Python教程来说,什么400集的,600集的都有。但是系统的图文教程,详细讲解的还真没有。当然像菜鸟教程、W3School这样的网站的图文教程是 《Python3.10.0 官方中文参考文档》属于参考文档,没有深入浅出的讲解,有一些很容易看懂,有一些却是看不懂。就像法律、数学,不是把法律条文、数学公式摆在这里就能看得懂的。

所以我在出品自己的Python教程时,是参考了很多很多的网站教程、视频教程、参考手册等内容,最终完成全面,精准,浅显易懂的文章教程。

今天是2021年11月16日,目前正在CSDN 看《2021 Google 开发者大会直播》,一边看直播,一边写今天的课程吧!再回到主题,今天要分享的是在Python中访问字典。

17.2.1、使用print()函数访问字典

在Python中访问字典,同访问列表、元组差不多,都是使用print()函数。

以昨天的内容为例,某高校寝室住着4大美女,将他们的名字保存在一个列表中,相应的年龄保存在另一个列表中,根据名字和年龄创建一个字典。

name = ['美琳','梦洁','雪丽','美莲']
age = [18,19,19,18]
a = dict(zip(name,age))
print(a)

运行结果为:

{'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
>>> 

在Python中使用字典时,很少会直接输出字典的全部内容,而是根据指定的键得到相应的结果。

在Python中,访问字典的元素,通过键来访问的。(不像列表和元组,可以通过索引访问)。

如,要想获取上方“雪丽”的年龄,可以使用以下代码:

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
print("雪丽的年龄为:",a['雪丽'])

输出结果为:

雪丽的年龄为: 19
>>> 

如果获取的指定键不存在,则会出现以下KeyError错误,如:

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
print("韩梅梅的年龄为:",a['韩梅梅'])

输出结果为:

Traceback (most recent call last):
  File "D:\Python\Python310\Doc\000.py", line 2, in <module>
    print("韩梅梅的年龄为:",a['韩梅梅'])
KeyError: '韩梅梅'
>>> 

在实际开发中,很可能我们不知道当前存在什么键,所以需要避免该异常的产生。具体的解决方法是使用if语句对不存在的情况进行处理,即给一个默认值。例如,可以将上面的代码修改为以下内容。

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
print("韩梅梅的年龄为:",a['韩梅梅'] if '韩梅梅' in a else '我的字典里没有此人')

即当“韩梅梅”不存在时,将显示以下内容。

韩梅梅的年龄为: 我的字典里没有此人
>>> 

17.2.2、使用字典对象的get()方法访问字典

另外,Python中推荐的方法是使用字典对象的get()方法获取指定键的值。其语法格式如下:

dictionary.get(key[,default])

其中,dictionary为字典对象,即要从中获取值的字典;key为指定的键;default为可选项,用于当指定的键不存在时,返回一个默认值,如果省略,则返回None。

例如,通过get()方法获取“雪丽”的年龄,可以使用下面的代码。

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
print("雪丽的年龄为:",a.get('雪丽'))

执行结果如下:

雪丽的年龄为: 19
>>> 

在Python开发中,为了解决在获取指定键的值时,因不存在该键而导致抛出异常,可以为get()方法设置默认值,这样当指定的键不存在时,得到结果就是指定的默认值。例如,将上面的代码修改为以下内容。

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
print("梅梅的年龄为:",a.get('梅梅','我的字典里没有此人'))

运行结果为:

梅梅的年龄为: 我的字典里没有此人
>>> 

17.3、在Python中遍历字典的三大方法详解

字典是以“键-值对”的形式存储数据的,所以就可能需要对这些“键-值对”进行获取。Python提供了遍历字典的方法,通过遍历可以获取字典中的全部“键-值对”。

17.3.1、使用字典对象的items()方法可以遍历字典的项和字典的“键-值对”。

字典对象的items()方法,语法如下:

dictionary.items()

其中,dictionary为字典对象;返回值为可遍历的“键-值对”元组列表。

17.3.1.1、遍历字典的项。

例如,定义一个字典,然后通过items()方法获取“键-值对”的元组列表,并输出全部项,代码如下:

chengji = {'语文':'88','数学':'96','英语':'86'}
for item in chengji.items():
    print(item)

运行结果如下:

('语文', '88')
('数学', '96')
('英语', '86')
>>> 

上面的示例得到的是元组中的各个元素,我们可以称为遍历字典的项。

17.3.1.2、遍历字典的“键-值对”。

想要获取到具体的“键-值对”,可以通过for循环遍历该元组列表。可以使用下面的代码进行遍历。

chengji = {'语文':'88','数学':'96','英语':'86'}
for key,value in chengji.items():
    print(key,"的成绩是",value)

运行结果为:

语文 的成绩是 88
数学 的成绩是 96
英语 的成绩是 86
>>> 

上面获取到的具体的每个键和值,我们称为遍历字典的“键-值对”。

站长在线温馨提示:字典的项是元组列表带(),字典的“键-值对”,是具体的键和值不带()。部分教程没有对字典的项和字典的“键-值对”进行区分。

17.3.2、使用字典对象的keys()方法可以获取字典的“键”序列。

其语法格式如下:

dictionary.keys()

其中,dictionary为字典对象;返回值为可遍历的“键”的序列。想要获取到具体的“键”,可以通过for循环遍历该序列。

例如,定义一个字典,然后通过keys()方法获取“键”的序列,并输出全部“键”,代码如下:

chengji = {'语文':'88','数学':'96','英语':'86'}
for item in chengji.keys():
    print(item)

运行结果如下:

语文
数学
英语
>>> 

上面的代码,就是输出了字典里面的全部“键”,下面我们来输出字典里面的全部“值”。

17.3.3、使用字典对象的values()方法可以获取字典的“值”序列。

其语法格式如下:

dictionary.values()

其中,dictionary为字典对象;返回值为可遍历的“值”的序列。想要获取到具体的“值”,可以通过for循环遍历该序列。

例如,定义一个字典,然后通过values()方法获取“值”的序列,并输出全部“值”,代码如下:

chengji = {'语文':'88','数学':'96','英语':'86'}
for item in chengji.values():
    print(item)

运行结果如下:

88
96
86
>>> 

17.4、在Python中添加、修改、删除和更新字典元素详解

17.4.1、在Python中添加字典元素。

由于字典是可变序列,所以可以随时在其中添加“键-值对”,这和列表类似。向字典中添加元素的语法格式如下:

dictionary[key] = value

详细参数说明如下:

dictionary:表示字典名称;

key:表示要添加元素的键,必须是唯一的,并且不可变,例如可以是字符串、数字或者元组;

value:表示元素的值,可以是任何数据类型,不是必须唯一。

例如,还是以之前的保存4位美女的年龄为例,在创建的字典中添加一个元素,并显示添加后的字典,代码如下:

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
a['梅梅'] = 20
print(a)

运行结果如下:

{'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18, '梅梅': 20}
>>> 

从上面的结果中,可以看出又添加了一个“键”为“梅梅”的元素。


17.4.2、在Python中修改字典元素。

由于在字典中,“键”必须是唯一的,所以如果新添加元素的“键”与已经存在的“键”重复,那么将使用新的“值”替换原来该“键”的值,这也相当于修改字典的元素。

例如,再添加一个“键”为“梦洁”的元素,这次设置她为“20”。可以使用下面的代码。

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
a['梦洁'] = 20
print(a)

运行结果如下:

{'美琳': 18, '梦洁': 20, '雪丽': 19, '美莲': 18}
>>> 

从上面的结果可以看出,并没有添加一个新的“键”为“梦洁”的元素,而是直接对“梦洁”进行了修改。


17.4.3、在Python中删除字典元素。

17.4.3.1、使用del命令删除指定元素

当字典中的某个元素不需要时,可以使用del命令将其删除。

例如,要删除字典dictionary的键为“梦洁”的元素,可以使用下面的代码。

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
del a['梦洁']
print(a)

运行结果如下:

{'美琳': 18, '雪丽': 19, '美莲': 18}
>>> 

 从上面的运行结果中可以看到,在字典a中只剩下3个元素了。

站长在线温馨提醒:

当删除一个不存在的键时,将抛出 KeyError 的异常。如:

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
del a['梅梅']
print(a)

运行结果为:

Traceback (most recent call last):
  File "D:\Python\Python310\Doc\000.py", line 2, in <module>
    del a['梅梅']
KeyError: '梅梅'
>>> 

一般情况下,需要将上面的代码修改为以下内容,从而防止删除不存在的元素时抛出异常。

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}  # 指定一个原始字典
if '梅梅' in a:                                       # 如果在字典中
    del a['梅梅']                                     # 删除一个元素
else:                                                 # 否则
    print("你要删除的键不在字典中")                   # 告诉结果
print("原字典为:",a)                                 # 输出原字典

运行结果为:

你要删除的键不在字典中
原字典为: {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
>>> 

17.4.3.2、使用clear()方法清空字典元素

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
a.clear()
print(a)

运行结果为:

{}
>>> 

上面就说明了使用clear()方法会清空字典里面的所有元素。

17.4.3.3、使用pop()方法删除字典中指定的元素

pop()方法和del命令类似,都是指定元素的键来删除该元素。

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
a.pop('梦洁')
print(a)

运行结果为:

{'美琳': 18, '雪丽': 19, '美莲': 18}
>>> 

从上面结果看出,pop()方法和del命令是一样的效果。

17.4.3.4、使用popitem() 方法删除字典中最后一个键值对。

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
a.popitem()
print(a)

运行结果为:

{'美琳': 18, '梦洁': 19, '雪丽': 19}
>>> 

17.4.4、在Python中更新字典元素。

使用update() 方法更新字典元素。

update() 方法和我们上面说的添加字典和修改字典类似,这时候有两种情况发生:

17.4.4.1、当update() 给定的键值对,在原字典不存在时,就会增加字典元素;

17.4.4.2、当update() 给定的键值对,在原字典存在时,就会修改字典元素;

请看下面的例子:

a = {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
a.update({'梅梅': 18, '梦洁': 20})         
print(a)

运行结果为:

{'美琳': 18, '梦洁': 20, '雪丽': 19, '美莲': 18, '梅梅': 18}
>>> 

通过上面结果可以看出,使用update() 方法,给定的键值对没有时,会增加一个键值对;给定的键值对存在时,就会修改字典元素。

17.5、Python中的字典推导式详解

我们在前面学过《python中的列表推导式详解》和《Python中的元组推导式详解》,今天我们来学习《Python中的字典推导式详解》。

和列表推导式类似,使用字典推导式可以快速的生成一个新的字典。

17.5.1、生成指定范围的数值字典。语法格式如下:

dictionary = {Expression for var in range}

dictionary:表示生成的字典名称

Expression:表达式,用于计算新字典的元素

var:循环变量

range:采用range()函数生成的range对象

例如:定义一个10以内的平方数的字典,代码如下:

a = {i:i**2 for i in range(10)}
print(a)

运行结果为:

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
>>> 

17.5.2、使用字典推导式也可以根据列表生成字典。

列如,定义两个4个元素的列表,,在应用字典推导式和zip()函数,将两个列表转换为对应的字典,并且输出该字典,代码如下:

name = ['美琳','梦洁','雪丽','美莲']
age = [18,19,19,18]
a = {i:j for i,j in zip(name,age)}
print(a)

运行结果为:

{'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
>>> 

站长在线温馨提醒:大家可以和 映射函数创建字典dictionary = dict(zip(list1,list2))进行对比哦!

相关阅读:

本站百科词条:Python

《零基础Python完全自学教程》目录 

1、认识python

2、安装python及写第一个Python程序

3、Python开发工具介绍

4、Python语法特点

5、Python中的变量

6、Python中的基本数据类型

7、Python中的基本输入和输出

8、Python中常用的运算符

9、Python中运算符的优先级和条件表达式

10、Python中的三大程序结构

11、Python中的选择语句

12、Python中的循环语句

13、Python中的break语句、continue语句和pass语句

14、Python中的序列知识详解

15、Python中的列表

16、Python中的元组系列知识

 

这篇关于零基础Python完全自学教程17:Python中的字典完全解读的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!