哈希表(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'))

哈希冲突怎么办?
有好几种方法
哈希扩容
数据量太大怎么办,就得扩容也叫重哈希,什么时候开始扩容呢不能等满了在开始扩容
达到一定的容量之后,就开始扩容
用装载因子判断是否开始扩容