哈希表(hash)是一种数据结构
可以快速的实现插入删除查找,
工作原理:
基于数组的,通过一种计算方式进行储存,
class Array():
def __init__(self,size = 4):
self.size = size # 记录容器大小
self.item = [None]*size # 分配空间
self.length = 0
def setitem(self,key,value):
self.item[key] = value
self.length += 1
def getitem(self,key):
return self.item[key]
def len(self):
return self.length
def iter(self):
for value in self.item:
yield value
class Slot():
def __init__(self,key = None,value = None):
self.key = key
self.value = value
def str():
return 'key: {} value: {}'.format(self.key,self.value)
class HashTable():
def __init__(self):
self.size = 4
self.items = Array(self.size)
def get_index(self,key):
return hash(key) % self.size
def put(self,key,value):
s = Slot(key,value)
index = self.get_index(key)
self.items[index] = s
def get(self,key):
index = self.get_index(key) # 获得key对应的索引
return self.items[index]
if __name__ == "__main__"
h = HashTable()
h.put('name','卢布')
h.put('sex','男')
print(h.get('name'))
print(h.get('name'))哈希冲突怎么办?
有好几种方法
哈希扩容
数据量太大怎么办,就得扩容也叫重哈希,什么时候开始扩容呢不能等满了在开始扩容
达到一定的容量之后,就开始扩容
用装载因子判断是否开始扩容

京公网安备 11010502036488号