最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

详解python利用拉链法实现字典方法示例代码

来源:懂视网 责编:小采 时间:2020-11-27 14:15:16
文档

详解python利用拉链法实现字典方法示例代码

详解python利用拉链法实现字典方法示例代码:这篇文章主要介绍了python利用拉链法实现字典的方法,文中给出了详细的示例代码,相信对大家具有一定的参考价值,需要的朋友可以们下面来一起看看吧。前言字典也叫散列表,最大的特点是通过key来查找其对应的值其时间复杂度是O(1),下面这篇文章就来给大家介绍
推荐度:
导读详解python利用拉链法实现字典方法示例代码:这篇文章主要介绍了python利用拉链法实现字典的方法,文中给出了详细的示例代码,相信对大家具有一定的参考价值,需要的朋友可以们下面来一起看看吧。前言字典也叫散列表,最大的特点是通过key来查找其对应的值其时间复杂度是O(1),下面这篇文章就来给大家介绍
这篇文章主要介绍了python利用拉链法实现字典的方法,文中给出了详细的示例代码,相信对大家具有一定的参考价值,需要的朋友可以们下面来一起看看吧。

前言

字典也叫散列表,最大的特点是通过key来查找其对应的值其时间复杂度是O(1),下面这篇文章就来给大家介绍介绍python利用拉链法实现字典的方法。

在Python中怎样用列表实现字典?

用列表实现字典最大的问题就是解决hash冲突,如果在列表中通过计算不同的key得到相同的相同了位置,这时候应该怎么办?

最简单的办法就是使用拉链法.

详解python利用拉链法实现字典方法示例代码

拉链法:就是在一个列表中每个位置再添加一个列表,这样就算是有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查到的时间,可见下图

详解python利用拉链法实现字典方法示例代码

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

详解python利用拉链法实现字典方法示例代码

详解python利用拉链法实现字典方法示例代码:这篇文章主要介绍了python利用拉链法实现字典的方法,文中给出了详细的示例代码,相信对大家具有一定的参考价值,需要的朋友可以们下面来一起看看吧。前言字典也叫散列表,最大的特点是通过key来查找其对应的值其时间复杂度是O(1),下面这篇文章就来给大家介绍
推荐度:
标签: 使用 代码 示例
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top