python-散列表
阿新 • • 發佈:2017-05-19
.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-散列表