散列表
散列表
简单地来说,通过某种函数关系将输入的数据映射为数字,使得数字与数据有着一一对应的关系。
其中,散列函数必须满足一定的要求:
- 它必须是一致的。例如,当你输入mag时得到4,那么每当输入mag时,其结果也得是4
- 它必须将用户的输入映射到不同的数值。例如,当你输入不同的数据时,如果每次都映射到1,那么显然这个散列函数不是一个好的散列函数。最好情况下,每一个数据映射到不同的数值
python提供的散列函数为字典。
例如:
book = {"aa":"3,12","bb":"231","cc":"5.77"}
散列表的应用
- 将散列表应用于查找。例如,将119.75.218.70映射为www.baidu.com。
- 防止元素重复。
- 将散列表用作缓存。访问网站的一个大致流程为:你向xxxxx网站服务器发出一个请求,然后服务器做一些 处理,返回个网页给你,最后你就看到所呈现的网站。
缓存原理:记录你最近所访问的数据,如果你需要该数据,服务器可以直接将其返回给你,不必进行大量的查找操作,从而节约时间。
缓存是一种常用的加速方式,而缓存的数据就存储在散列表中。
其大致过程如下:
测试代码:
cache = {} def get_page(url): if cache.get(url): return cache[url] else: data = get_data_from_server(url) cache[url] = data return data
性能分析
由于常规的散列表都是一一映射的关系,查找、删除、修改值,其时间复杂度均为O(1)