散列(hashing)技术不仅在绝大多数算法类书籍中都有详细介绍,而且在 Python 程序当中也非常普及。该技术往往会涉及一些经由某既定对象计算而来的整数值(乍看之下似乎是随机的)。例如,我们可以用这些值来索引数组元素(当然,需要进行某些调整,以确保其在合法的索引范围内)。
在 Python 语言中,标准散列机制是由 hash 函数提供的,调用一个对象的__hash__ 方法:
>>> hash(42)
42
>>> hash("Hello, world!")
-1180830286
42 的类型为 int,”Hello, world!” 的类型为 str:
>>> type(42)
int
>>> type("Hello, world!")
str
使用 dir() 查看 int、str 等基本数据类型的属性和方法列表:
>>> dir(int)
该机制常用于字典类型(dict)的实现,而 dict 就是我们常数的散列表。同样,集合类型(set)也是通过这种机制实现的。
这就意味着我们在对 dict 和 set 中的元素进行访问时所耗费的(预期)时间都是常数级的。