- 数据结构与算法(Python版)
- 周元哲编著
- 902字
- 2021-12-15 16:52:51
3.9 字典
3.9.1 字典的概念
【例3-14】根据同学的名字查找对应的成绩。
【解析】采用列表实现,则需要names和scores两个列表,并且列表中元素的次序一一对应,如zhou对应95,Bob对应75等,如下所示。
通过名字查找对应成绩,先在names中遍历查找的名字,再从scores中遍历对应的成绩,查找时间会随着列表的长度的增加而增加。为了解决这个问题,Python提供了字典。
字典(Dict)在其他程序设计语言中称为映射(Map),通过键值对(Key-Value)存储数据,键和值之间用冒号间隔,元素项之间用逗号间隔,整体用一对大括号“{}”括起来。字典语法结构如下所示。
字典有如下特性。
● 字典的值可以是任意数据类型,包括字符串、整数、对象,甚至字典等。
● 键值对没有顺序。
● 键必须是唯一的,不允许同一个键重复出现,如果同一个键被赋值两次,后一个值会覆盖前面的值。举例如下。
● 键是不可变的,只能使用整数、字符串或元组充当,不能使用列表。
【解析】因为dict根据Key来计算Value的存储位置,在Python中,字符串、整数等都是不可变的,而list是可变的,因此,list不能作为Key。
字典与列表相比,有以下几个特点。
● 字典用空间来换取时间,其查找和插入的速度极快。
● 字典需要占用大量的内存,内存浪费较多。
● 字典是无序的对象集合,字典中的元素是通过键来存取的,而不是通过偏移存取。
采用字典实现上面的例子,则只需创建“名字”-“成绩”的键值对,便可直接通过名字查找成绩。字典实现代码如下。
3.9.2 字典的操作
下面介绍字典元素的访问、删除、修改和增加等相关操作。
(1)字典元素的访问
1)keys()方法返回一个包含所有键的列表。
2)has_key()方法检查字典中是否存在某一键。
3)values()方法返回一个包含所有值的列表。
4)get()方法根据键返回值,如果不存在则返回None。
5)items()方法返回一个由(key,value)组成的元组。
6)in运算用于判断某键是否在字典中,对于value值不适用。
7)copy()方法复制字典。
(2)字典元素的删除
1)del()方法允许使用键从字典中删除元素。
2)clear()方法清除字典中的所有元素。
3)pop()方法删除一个关键字并返回它的值。
(3)字典元素的修改
update()方法类似于合并,它把一个字典的键和值合并到另一个字典以覆盖相同键的值。
(4)字典元素的增加
字典方法如表3.13所示。
表3.13 字典方法