#-*- coding: utf-8 -*-
classArray(object):def __init__(self, size=32, init=None):
self._size=size
self._items= [init] *sizedef __getitem__(self, index):returnself._items[index]def __setitem__(self, index, value):
self._items[index]=valuedef __len__(self):returnself._sizedef clear(self, value=None):for i inrange(len(self._items)):
self._items[i]=valuedef __iter__(self):for item inself._items:yielditemclassSlot(object):def __init__(self, key, value):
self.key, self.value=key, valueclassHashTable(object):
UNUSED= None #没被使用过
EMPTY = Slot(None, None) #使用却被删除过
def __init__(self):
self._table= Array(8, init=HashTable.UNUSED) #保持 2*i 次方
self.length =0
@propertydef_load_factor(self):#load_factor 超过 0.8 重新分配
return self.length /float(len(self._table))def __len__(self):returnself.lengthdef_h