1. 程式人生 > >python-散列表

python-散列表

.cn ima 刪除 其中 得到 輸入 必須 技術分享 分享

散列表

簡單地來說,通過某種函數關系將輸入的數據映射為數字,使得數字與數據有著一一對應的關系。

技術分享

其中,散列函數必須滿足一定的要求:

  •  它必須是一致的。例如,當你輸入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)

python-散列表