用一段python代码实现散列表的put方法,使得散列表在负载因子达到预设值时自动扩充大小
时间: 2023-06-03 18:05:54 浏览: 63
好的,这是一个技术问题,可以回答。下面是实现散列表的put方法的Python代码:
```
class HashTable:
def __init__(self, capacity=10, load_factor=0.7):
self.capacity = capacity
self.load_factor = load_factor
self.size = 0
self._keys = [None] * capacity
self._values = [None] * capacity
def hash(self, key):
return hash(key) % self.capacity
def put(self, key, value):
index = self.hash(key)
while self._keys[index] is not None:
if self._keys[index] == key:
self._values[index] = value
return
index = (index + 1) % self.capacity
self._keys[index] = key
self._values[index] = value
self.size += 1
if self.size >= self.capacity * self.load_factor:
self._resize()
def _resize(self):
self.capacity *= 2
new_keys = [None] * self.capacity
new_values = [None] * self.capacity
for i in range(len(self._keys)):
if self._keys[i] is not None:
index = self.hash(self._keys[i])
while new_keys[index] is not None:
index = (index + 1) % self.capacity
new_keys[index] = self._keys[i]
new_values[index] = self._values[i]
self._keys = new_keys
self._values = new_values
```
这个哈希表类表示一个固定大小的散列表。它的构造函数接受两个参数:容量和负载因子。默认情况下,它的容量为10,负载因子为0.7。put方法用于往散列表中添加一个键值对。如果哈希键已经存在,则更新对应的值。如果负载因子达到预设值,哈希表就会自动扩充大小并重新哈希所有的键值对。