这一篇教程,我们来了解Python中的第四种数据结构–字典(dict)。
字典同样是一个序列,不过字典的元素是由key(键,可理解为关键字或名称)与values(值)组成。
就好像我们查字典,一个拼音对应着与之关联的一个或多个汉字,拼音就key,而对应的汉字就是values。
字典两侧和集合一样是大括号,其中每一个元素都是“key:values”的形式,并且每个元素间以逗号分隔。
例如:{‘yue’:[‘月’,’约’,’乐’],’ri’:’日’,’le’:’了’,’liao’:’了’}
字典中的值没有特定顺序,但必须用一个特定的键存储。
字典的键必须是不可变的数据类型,可以是数字、字符串或者元组。
说明:这种能够通过名称引用值的数据类型称做映射(Mapping),字典是Python中唯一内建的映射类型。映射的概念好像比较难懂,以我个人的理解,映射就是名称集合与值集合的对应关系,一个名称可以对应不同的值,但是一个值只能有唯一的名称。
使用字典需要注意以下几点:
字典中不能够出现相同的键,但可以出现相同的值。
字典中的键不能够更改,但值可以更改。
字典的值可以为Python中的任何对象。
接下来,我们来看一下关于字典的相关操作。
1、创建字典
创建字典可以直接按格式创建,也可以使用dict()方法进行创建。
dict(**kwarg):参数**kwarg为可变关键字参数。
dict(mapping,**kwarg):参数mapping为映射函数。
dict(iterable,**kwarg):参数iterable为可迭代对象。
示例代码:
d={}#创建空字典
d=dict()#创建空字典
d={yue:[月,约,乐],ri:日,le:了,liao:了}#创建字典
d=dict(小楼=好帅,苍井=好美)#通过可变参数创建字典
d=dict([(小楼,好帅),(苍井,好美)])#通过可迭代对象(列表)创建字典
另外,还有一种字典的创建方式,通过fromkeys(seq,value)方法进行创建,参数seq为包含key的序列,参数value为key的默认值。
示例代码:
k=[小楼,明步]#key的列表
d1=dict.fromkeys(k)#从key的列表创建字典
d2=dict.fromkeys(k,哦哦)#从key的列表创建字典,并赋予默认值
print(d1)#显示输出结果为:{小楼:None,明步:None}
print(d2)#显示输出结果为:{小楼:哦哦,明步:哦哦}
2、查询元素
首先,查询字典中的元素。
我们可以使用items()方法,通过items()方法可以获取到字典中所有元素的迭代器。
提示:关于迭代器,大家可以暂时不用关心,在后面的教程中有专门的讲解。
示例代码:
d={小楼:好帅,苍井:好美}#创建字典
print(d.items())#显示输出结果为:dict_items([(小楼,好帅),(苍井,好美)])
然后,查询字典中元素的键。
我们可以使用keys()方法,通过keys()方法可以获取到字典中所有元素键的迭代器。
示例代码:
d={小楼:好帅,苍井:好美}#创建字典
print(d.keys())#显示输出结果为:dict_keys([小楼,苍井])
最后,查询字典中元素的值。
查询元素值有多种方法:
第一种,通过键可以获取相对应的值:字典[键]
示例代码:
d={小楼:好帅,苍井:好美}#创建字典
print(d[小楼])#显示输出结果为:好帅
print(d[苍井])#显示输出结果为:好美
第二种,通过get(k,default)方法查询,参数k为查询的键,参数default为未查询到结果时的默认值。
示例代码:
d={小楼:好帅,苍井:好美}#创建字典
print(d.get(小楼,男神))#显示输出结果为:好帅
print(d.get(樱井,女神))#显示输出结果为:女神
第三种、通过values()方法可以获取到字典中所有元素值的迭代器。
示例代码:
d={小楼:好帅,苍井:好美}#创建字典
print(d.values())#显示输出结果为:dict_values([好帅,好美])
3、添加元素
添加单个元素:
首先,可以通过“字典[键]=值”的方式进行添加,如果字典中不存在相同的键则自动添加,否则修改已存在的键所对应的值。
示例代码:
d={小楼:好帅,苍井:好美}
d[樱井]=好棒#添新元素到字典
d[明步]=好大,好白#添加值为元组的新元素到字典
print(d)#显示输出结果为:{小楼:好帅,苍井:好美,樱井:好棒,明步:(好大,好白)}
另外,还可以通过setdefault(k,default)方法进行添加,参数k为指定的键,参数default为默认值。当字典中存在指定的键时,能够返回该键所对应的值;如果不存在指定的键时,则会返回参数default中设置的值,同时,在字典中会添加新元素,新元素的键即为参数k,值即为参数default。
示例代码:
d={小楼:好帅,苍井:好美}#创建字典
print(d.setdefault(小楼,好棒))#字典中存在相应的键,则返回该键对应的值,显示输出结果为:好帅
print(d.setdefault(樱井,好爽))#字典中不存在相应的键,则返回default参数的值,显示输出结果为:好爽
print(d)#当字典中不存在相应的键时,添加新元素,显示输出结果为:{小楼:好帅,苍井:好美,樱井:好爽}
添加多个元素:通过update(m,kwargs)方法进行添加,参数m(mapping)为映射函数,kwargs为可变参数。
示例代码:
d={小楼:好帅,苍井:好美}#创建字典
d.update(樱井=好白,明步=好大)#通过可变参数添加多个元素
print(d)#显示输出结果为:{小楼:好帅,苍井:好美,樱井:好白,明步:好大}
d={小楼:好帅,苍井:好美}#创建字典
d.update(((樱井,好白),(明步,好大)))#通过元组添加多个元素
print(d)#显示输出结果为:{小楼:好帅,苍井:好美,樱井:好白,明步:好大}
d={小楼:好帅,苍井:好美}#创建字典
d.update([(樱井,好白),(明步,好大)])#通过列表添加多个元素
print(d)#显示输出结果为:{小楼:好帅,苍井:好美,樱井:好白,明步:好大}
d={小楼:好帅,苍井:好美}#创建字典
d.update({樱井:好白,明步:好大})#通过字典添加多个元素
print(d)#显示输出结果为:{小楼:好帅,苍井:好美,樱井:好白,明步:好大}
d1={小楼:好帅,苍井:好美}#创建字典
d2={樱井:好白,明步:好大}#创建字典
d1.update(d2)#合并字典元素
print(d)#显示输出结果为:{小楼:好帅,苍井:好美,樱井:好白,明步:好大}
4、修改元素值
修改某个键对应的元素:字典[键]=新值
示例代码:
d={小楼:好帅,苍井:好美}#创建字典
d[小楼]=好棒
print(d)#显示输出结果为:{小楼:好棒,苍井:好美}
5、删除元素
使用del指令可以通过键删除某个元素:del字典[键]
示例代码:
d={小楼:好帅,苍井:好美}#创建字典
deld[苍井]#删除元素
print(d)#显示输出结果为:{小楼:好帅}
6、取出元素与元素值
我们可以使用popitem()方法在字典中取出元素。
示例代码:
d={小楼:好帅,苍井:好美}#创建字典
print(d.popitem())#显示输出结果为:(苍井,好美)
print(d)#显示输出结果为:{小楼:好帅}
并且,我们可以使用pop(k,default)方法在字典中取出指定元素的值,参数k为指定元素的键,参数default为未取到结果时的默认值。
d={小楼:好帅,苍井:好美}#创建字典
print(d.pop(小楼))#显示输出结果为:好帅
print(d.pop(樱井,好爽))#显示输出结果为:好爽
print(d)#显示输出结果为:{苍井:好美}
7、设置默认值
d={小楼:好帅,苍井:好美}#创建字典
print(d.setdefault(小楼,好棒))#显示输出结果为:好帅
print(d.setdefault(樱井,好爽))#显示输出结果为:好爽
print(d)#显示输出结果为:{小楼:好帅,苍井:好美,樱井:好爽}
8、其他
字典也支持使用以下方法:
clear():清空字典
copy():复制字典:
len():获取字典元素数量
max():获取字典中最大的键
min():获取字典中最小的键
同时,字典也支持通过in和notin进行成员关系的判断。
大家可以参照集合中这些方法的使用,在此不做举例。
本节知识点:
数据结构(字典)的相关操作。
本节英文单词与中文释义:
1、dict:字典
2、key:键/关键字
3、value:值
4、item:项
5、mapping:映射
6、seq(sequence):序列
7、from:从/来自
8、get:获取
9、default:默认
10、none:没有
11、arg:可变元素
12、kwargs(keywordargs):可变关键字元素