第十一节 字典
大家好!今天我们学习Python的字典,它仍然是Python四大数据结构之一,也是很特别的一种数据类型。
1、字典
字典(dict)是Python语言中唯一的映射类型的序列。字典对象的值是可变的,它是一个容器类型,能存储任意个数的Python对象,也可以嵌套其他对象。
1、与其他序列类型的数据相比,字典存取和访问数据的方式不同。
2、其他序列类型是有序的,实际上隐含了数字类型的键(索引标号)。
3、字典是无序的,键和值成对出现,依赖于键来索引值。
4、字典的键不可更改,可以使用数字、字符串、元祖,一般用字符串作键。
5、键和值具有映射关系,因为键的唯一性,使得字典内的对象不重复。
2、创建一个字典
字典(dict)是由键和值组成的“键值对”的集合。
说明:
1、键与值用冒号隔开(:),每个键值对用逗号分割,整体放在花括号中{}。
2、键必须唯一,且不可更改。所以,凡是支持原处更改的类型不能作为键,如list、dict和set等,可以是数字、字符串和元组。
3、值不必唯一,可以取任何数据类型,甚至字典嵌套。
4、字典不是一个序列,它的内部看起来是无序的。但支持排序。
3、字典的增、删、改、查:【增】
我们可以直接或通过dict.setdefault()方法,向字典追加键值对。
说明:
1、直接通过给新的键赋值的方法,可以直接为字典追加新的键值对。
2、使用setdefault()方法也可以向字典追加新的键值对,并返回当前追加的值。
3、如果dict.setdefault()方法追加的键已经存在,则不会追加,仅返回该键对应的值
4、字典的增、删、改、查:【删】
使用del、pop()和clear()方法,可以删除一个或全部的键值对。
说明:
1、del方法通过指定键,可以直接删除该键对应的键值对。
2、使用pop()方法也可以删除字典指定键的键值对,并返该键对应的值。
3、字典通过clear()方法,将全部清空所有键值对。
5、字典的增、删、改、查:【改】
通过指定键或update()函数的方法,可以直接间接地修改某个键值对。
说明:
1、字典通过指定键方法可以直接修改对应的值。
2、使用update()函数也可以将一个新的字典的值,更新到指定的字典。遇到相同的键,修改其值,不同则追加。
3、也可以将一个元组的列表作为update()函数的参数,用来更新一个指定的字典。
6、字典的增、删、改、查:【查1】
字典不再使用下标索引来访问,而是使用键来访问对应的值。
说明:
1、不能使用下标索引的方法来访问字典中的值。
2、键和值一一对应,可以通过键访问对应的值。
3、字典中不允许有相同的键,如果重复添加了,内存中仅保留后面的键值。
7、字典的增、删、改、查:【查2】
使用dict.keys()、dict.values()、dict.items()方法,分别查询所有键、值和键值对。
说明:
1、dict.keys()方法返回一个doct_keys对象,该对象包含字典的所有键的列表。
2、dict.values()方法返回一个doct_values对象,该对象包含字典的所有值的列表。
3、dict.items()方法返回一个doct_items对象,该对象包含由字典的所有键值对组成的元组的列表。
8、字典的迭代
使用for key in dict迭代语句,可以方便地遍历一个字典的所有键值对。
9、字典的合并
在python3中,使用update()函数即可轻松实现两个字典的合并。
前面的介绍已经知道,如果dict2中存在dict1中的键值,将会用dict2中的值,替代dict1中的值,而不是追加。这样,当两个dict合并时,能够形成完美的叠加,而不会出现有重复的键值对。
10、字典的排序
在python中,字典看起来是无序的,使用sorted()函数可实现排序。
函数sorted()对所有可迭代的对象进行排序。
sorted(req,key=lambda x : x)有两个参数,第一个req,为一个可排序的对象,第二个key,是要被排序的目标,此处为lambda表达式。
11、字典的常用内置函数或方法
Python字典有如下常用内置函数和方法。请注意,我们有时在网上查找到的函数或方法,使用时会报错,很可能是版本问题。
len(dict) #返回字典的长度(键值对的个数)
dict.clear() #删除字典内所有元素
dict.copy() #返回一个字典的浅复制
dict.get(key, default) #返回指定键的值,如果键不存在,返回default值
dict.setdefault(key, val) #和get()类似,但如果键不存在,则添加该键值对
dict.items() #以列表返回可遍历的(键, 值) 元组数组
dict.keys() #返回一个字典所有的键的列表
dict.update(dict2) #把字典dict2的键/值对更新到dict里
dict.values() #以列表返回字典中的所有值
小结
这节课,我们详细介绍了字典(dict)的创建和使用方法。
预告
下节课,我们将继续介绍Python数据结构:集合,它是Python中又一个最常用的数据结构之一,也是我们集中介绍的最后一种数据结构。集合最常用的场景就是“去重”和集合运算(并集、交集和差集),它与我们初中数学中学到的集合概念非常类似。