欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中字典的概念、特征、创建和删除详解》。本知识点主要内容有:字典的概念、字典的主要特征、字典的创建、字典的删除。
在前面的Python课程学习中,我们学到了序列中的列表和元组,今天开始讲解序列的另一个常用数据结构--字典。
1、字典的概念
字典(dictionary)是无序的、可变的、保存的内容是以“键-值对”的形式存储的序列。
我们怎么去理解Python中的字典呢?我们读小学的时候,都用过《新华字典》,在《新华字典》中通过拼音或者部首,我们可以快速的查到对应的文字和解释。其中,《新华字典》里的拼音或者部首相当于Python中字典的键(key),而对应的汉字和解释相当于Python中字典的值(value)。键是唯一的,而值可以有多个。键及其关联的值称为“键值对”。
2、字典的主要特征
字典的主要特征如下:
2.1、通过键而不是通过索引来读取
字典有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。
2.2、字典是任意对象的无序集合
字典是无序的,各项是从左到右随机排序的,即保存在字典中的项没有特定的顺序。这样可以提高查找顺序。
2.3、字典是可变的,并且可以任意嵌套
字典可以在原处增长或者缩短(无须生成一份拷贝),并且它支持任意深度的嵌套(即它的值可以是列表或者其他的字典)。
2.4、字典中的键必须唯一
不允许同一个键出现两次,如果出现两次,则后一个值会被记住。
2.5、字典中的键必须不可变
字典中的键是不可变的,所以可以使用数字、字符串或者元组,但不能使用列表。
和列表、元组一样,字典也有它自己的类型。在Python中,字典的数据类型为dict,通过type()函数即可查看:
a={A:1,B:2,C:3}#a是一个字典类型print(type(a))
运行结果如下:
classdict
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大方法:
3.1、创建空字典
字典和列表,元组一样都是可以创建空值的序列。在Python中,创建空字典居然还有两个方法:dictionary={}或者dictionary=dict()。
示例3.1.1:用dictionary={}方法创建空列表,输出结果,并打印数据类型
dictionary={}print(dictionary)print("dictionary的数据类型为:",type(dictionary))
运行结果如下:
{}dictionary的数据类型为:classdict
示例3.1.2:用dictionary=dict()方法创建空列表,输出结果,并打印数据类型
dictionary=dict()print(dictionary)print("dictionary的数据类型为:",type(dictionary))
运行结果如下:
{}dictionary的数据类型为:classdict
3.2、直接赋值创建字典
上面的,某中学初三1班,M同学的语数英的成绩,保存为字典就是直接赋值创建字典。
chengji={语文:88,数学:96,英语:86}print(chengji)
运行结果如下:
{语文:88,数学:96,英语:86}
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}
3.4、通过二元组列表创建
定义一个二元组列表并且赋值,
list=[(A,1),(B,2),(C,3)]a=dict(list)print(a)
运行结果为:
{A:1,B:2,C:3}
3.5、通过映射函数创建字典
语法如下:
dictionary=dict(zip(list1,list2))
其中,相关参数说明如下:
dictionary:表示字典名称。
zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。如果想得到元组,可以将zip对象使用tuple()函数转换为元组;如果想得到列表,则可以使用list()函数将其转换为列表。
list1:表示一个列表,用于指定要生成字典的键。
list2:表示一个列表,用于指定要生成字典的值。如果list1和list2的长度不同,则与最短的列表长度相同。
示例3.5:某高校寝室住着4大美女,将他们的名字保存在一个列表中,相应的年龄保存在另一个列表中,根据名字和年龄创建一个字典。
思路:在IDLE中,我们打开草稿文件.py,先定义两个均包含4个元素的列表,在应用dict()函数和zip()函数,将两个列表转化为对应的字典,并输出该字典。
name=[美琳,梦洁,雪丽,美莲]age=[18,19,19,18]a=dict(zip(name,age))print(a)
运行结果为:
{美琳:18,梦洁:19,雪丽:19,美莲:18}
3.6、通过dict对象的fromkeys()方法创建字典。
Python中,还可以使用dict字典类型提供的fromkeys()方法创建带有默认值的字典,具体格式为:
dictionary=dict.fromkeys(list,value=None)
其中,list参数表示字典中所有键的列表(list);value参数表示默认值,如果不写,则为空值None。
kemu=[语文,数学,英语]#作为键的列表a=dict.fromkeys(kemu,)#指定科目的默认成绩为print(a)
运行结果如下:
{语文:,数学:,英语:}
3.7、通过字典推导式创建(字典的最后一个知识点再详细讲解字典推导式)
a={i:2*iforiinrange(3)}print(a)
运行结果如下:
{0:0,1:2,2:4}
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}
4、字典的删除
同列表和元组一样,不再需要的字典也可以使用del命令删除。例如,通过下面的代码即可将已经定义的字典删除。
deldictionary
另外,如果只是想删除字典的全部元素,可以使用字典对象的clear()方法。执行clear()方法后,原字典将变为空字典。例如,下面的代码将清除字典的全部元素。
dictionary.clear()
除了上面介绍的方法可以删除字典元素,还可以使用字典对象的pop()删除并返回指定“键”的元素,以及使用字典对象的popitem()方法删除并返回字典中的一个元素。
到此为止,本文学习的是《Python中的元组推导式详解》。本知识点主要内容有:字典的概念、字典的主要特征、字典的创建、字典的删除。