字典 - 映射类型 #################################### 通过名称来访问值的数据结构称为映射(mapping),字典是 Python 中唯一的内置映射类型。字典是一种可变容器模型,且可存储任意类型对象。 字典的名称指出了这种数据结构的用途。普通图书适合按从头到尾的顺序阅读,这有点像 Python 中的列表。字典(日常生活中的字典和 Python 字典)旨在让你能够轻松地找到特定的单词(键),以获悉其定义(值)。 在很多情况下,使用字典都比使用列表更合适。字典的一些用途: * 表示棋盘的状态,其中每个键都是由坐标组成的元组; * 存储文件修改时间,其中的键为文件名; * 数字电话/地址簿。 创建字典 ************************************ 可以用以下方式创建字典: 1. 使用一对花括号将多个以逗号分隔的键: 值对括起来: {'a': 1, 'b': 2, 'c': 3} 2. 使用内置函数 dict 字典由键及其相应的值组成,这种键-值对称为项(item)。字典中值的类型可以是任何值,没有限制。 .. note:: 字典中的键必须是独一无二的,而且是不可变的(列表不可以用作键)。 当数字类型用作键时,1 和 1.0 可以索引到同一个值,但是请注意,由于计算机对于浮点数存储的只是近似值,因此将其用作字典键是不明智的。 :: >>> a = {1: 'a', 2: 'b'} >>> a[1] 'a' >>> a[1.0] 'a' 也可以使用函数 dict 从其他映射或键-值对序列创建字典。 .. highlight:: none :: >>> a = dict(one=1, two=2, three=3) >>> b = {'one': 1, 'two': 2, 'three': 3} >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3])) >>> d = dict([('two', 2), ('one', 1), ('three', 3)]) >>> e = dict({'three': 3, 'one': 1, 'two': 2}) 像函数 list 、tuple 和 str 一样,如果调用这个函数时没有提供任何实参,将返回一个空字典。 字典的基本操作 ************************************ 字典的基本行为在很多方面都类似于序列。 * list(dict) 返回字典中所有键的列表 * len(dict) 返回字典所有项(键-值对)的总数 * dict[key] 返回与键 key 相关联的值,如果键 key 不存在则引发 KeyError * dict[key] = value 将值 value 关联到键 key * del dict[key] 删除键为 key 的项,如果键 key 不存在则引发 KeyError * key in dict 检查字典是否包含键为 key 的项,存在返回 True,否则返回 False .. note:: 相比于检查列表是否包含指定的值,检查字典是否包含指定的键的效率更高。数据结构越大,效率差距就越大。 虽然字典和列表有多个相同操作,但也有一些重要的不同之处。 * 自动添加:即便是字典中原本没有的键,也可以给它赋值,这将在字典中创建一个新项。 * 成员资格:表达式 k in dict 查找的是键而不是值。