持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
字典
字典类型的对象(字典的缩写)就像列表一样,除了我们使用键而不是整数来索引它们。任何可哈希对象都可以用作键。将字典视为一组键/值对。dict 类型的文字括在大括号中,每个元素都写为一个键,后跟一个冒号,后跟一个值。例如,代码,
将打印
不能使用索引访问字典中的条目。这就是为什么month_numbers[1]明确地指的是键1的条目,而不是第二个条目。是否可以使用 in 运算符测试字典中是否定义了键。
与列表一样,字典也是可变的。例如,我们可以通过写入 month_numbers['June'] = 6来添加条目,或者通过写入来更改条目,例如,month_numbers['May'] = 'v'。
字典是Python的伟大之处之一。它们大大降低了编写各种程序的难度。例如,如图 5-9 所示。我们使用字典来编写一个(非常可怕的)程序来在语言之间进行翻译。
图中的代码打印出来
请记住,字典是可变的。所以,要小心副作用。例如
将打印
许多编程语言不包含提供从键到值的映射的内置类型。相反,程序员使用其他类型来提供类似的功能。例如,通过使用列表实现字典相对容易,其中每个元素都是表示键/值对的元组。然后,我们可以编写一个简单的函数来执行关联检索,例如,
这种实现的问题在于它在计算上效率低下。在最坏的情况下,程序可能必须检查列表中的每个元素才能执行单个检索。相比之下,内置实现速度很快。它使用一种称为散列的技术(如第 12 章所述)来执行几乎与字典大小无关的时间查找。
有多种方法可以使用 for 语句来循环访问字典中的条目。如果 d 是字典,则 d 中 k 形式的循环循环遍历 d 的键。选择键的顺序是键在字典中插入的顺序。
打印
要循环访问字典中的值,我们可以使用方法值。例如
打印
该方法值返回类型为 dict_values 的对象。这是视图对象的一个示例。视图对象是动态的,因为如果与其关联的对象发生更改,则通过视图对象可以看到更改。例如,代码
打印:
同样,方法键返回类型为 dict_keys 的视图对象。视图对象可以转换为列表,例如,列表(大写)以大写形式返回值的列表。
为了迭代键/值对,我们使用方法项。此方法返回类型为 dict_items 的视图对象。dict_items 类型的对象的每个元素都是键及其关联值的元组。例如,代码
打印
使用元组作为键通常很方便。 例如,想象一下,使用表单的元组(flight_number,天)来表示航空公司的航班。 然后,很容易在字典中使用这样的元组作为键来实现从航班到到达时间的映射。 列表不能用作键,因为 list 类型的对象不可哈希。
正如我们所看到的,有许多与字典相关的有用方法,包括一些用于删除元素的方法。我们不在这里枚举所有这些,但将在本书后面的示例中使用它们作为方便。图 5-10 包含一些对字典更有用的操作。
1en(d) 返回 d. d.keys() 中的项数 返回 d. d. 中的键的视图。