国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python利用拉鏈法實現字典方法示例

2020-02-23 04:29:16
字體:
來源:轉載
供稿:網友

前言

字典也叫散列表,最大的特點是通過key來查找其對應的值其時間復雜度是O(1),下面這篇文章就來給大家介紹介紹python利用拉鏈法實現字典的方法。

在Python中怎樣用列表實現字典?

用列表實現字典最大的問題就是解決hash沖突,如果在列表中通過計算不同的key得到相同的相同了位置,這時候應該怎么辦?

最簡單的辦法就是使用拉鏈法.

拉鏈法:就是在一個列表中每個位置再添加一個列表,這樣就算是有hash沖突也能夠存儲進去,當選取的hash函數足夠好,

num的數足夠大,就能夠保證列表中的每一個列表里面只有一個元素。根據key計算的元素所在的位置,然后來取值就能達

到O(1)的時間。

方法示例

class MyDict: def __init__(self, num=100): # 指定列表大小  self._num = num  self._lst = []  for _ in range(self._num):   self._lst.append([]) def update(self, key, value): # 添加 key-value  key_index = hash(key) % self._num  for i, (k, v) in enumerate(self._lst[key_index]):   if key == k:    self._lst[key_index][i] = [key, value]    break  else:   self._lst[key_index].append([key, value]) def get(self, key): # 根據指定的 key 彈出值  key_index = hash(key) % self._num  for k, v in self._lst[key_index]:   if k == key:    return v  else:   raise KeyError('No such {} key'.format(key)) def pop(self, key): # 根據 key 彈出元素 并且刪除  key_index = hash(key) % self._num  for i, (k, v) in enumerate(self._lst[key_index]):   if k == key:    result = v    self._lst.pop(i)    return result  else:   raise KeyError('No such {} key'.format(key)) def __getitem__(self, key): # 可以通過下標來取值  key_index = hash(key) % self._num  for k, v in self._lst[key_index]:   if k == key:    return v  else:   raise KeyError('No such {} key'.format(key)) def keys(self): # 取得所有的key  for index in range(self._num):   for k, v in self._lst[index]:    yield k def values(self): # 取得所有的 value  for index in range(self._num):   for k, v in self._lst[index]:    yield v def items(self): # 取得所有的條目  for index in range(self._num):   for item in self._lst[index]:    yield item

通過key查到的時間,可見下圖

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林站長站的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜昌市| 巴林左旗| 兴山县| 雷山县| 阜康市| 辽宁省| 斗六市| 十堰市| 根河市| 和林格尔县| 兖州市| 深泽县| 儋州市| 乌苏市| 通化县| 三亚市| 大石桥市| 同心县| 百色市| 河东区| 永清县| 济宁市| 南昌市| 西充县| 周至县| 太保市| 永宁县| 宝坻区| 通河县| 邢台市| 聂拉木县| 宝兴县| 平阴县| 广宁县| 石首市| 青河县| 瑞安市| 河北区| 青海省| 抚远县| 乌兰浩特市|