散列表

散列表

简单地来说,通过某种函数关系将输入的数据映射为数字,使得数字与数据有着一一对应的关系。

 其中,散列函数必须满足一定的要求:

  •  它必须是一致的。例如,当你输入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)

     

 

posted @ 2017-05-19 17:15  看雪。  阅读(328)  评论(0编辑  收藏  举报