字典这个数据结构活跃在所有 Python 程序的背后,即便你的源码里并没有直接用到它。
——A. M. Kuchling
《代码之美》第 18 章“Python 的字典类:如何打造全能战士”
dict 类型不但在各种程序里广泛使用,它也是 Python 语言的基石。模块的命名空间、实例的属性和函数的关键字参数中都可以看到字典的身影。跟它有关的内置函数都在 __builtins__.__dict__模块中。
正是因为字典至关重要,Python 对它的实现做了高度优化,而散列表则是字典类型性能出众的根本原因。
集合(set)的实现其实也依赖于散列表,因此本章也会讲到它。反过来说,想要进一步理解集合和字典,就得先理解散列表的原理。
本章内容的大纲如下:
常见的字典方法
如何处理查找不到的键
标准库中 dict 类型的变种
set 和 frozenset 类型
散列表的工作原理
散列表带来的潜在影响(什么样的数据类型可作为键、不可预知的顺序,等等)