- Published on
Data Structures & Algorithms: How to create a Hash Table?
- Authors
- Name
- Loi Tran
class HashTable:
def __init__(self, size=10):
self.size = size
self.table = [[] for _ in range(self.size)]
def _hash(self, key):
val = sum(ord(char) for char in str(key)) % self.size
print(val)
return val
def insert(self, key, value):
index = self._hash(key)
bucket = self.table[index]
for i, (k, v) in enumerate(bucket):
if k == key:
bucket[i] = (key, value)
return
bucket.append((key, value))
def get(self, key):
index = self._hash(key)
bucket = self.table[index]
for k, v in bucket:
if k == key:
return v
return None
def remove(self, key):
index = self._hash(key)
bucket = self.table[index]
for i, (k, v) in enumerate(bucket):
if k == key:
bucket.pop(i)
return True
return False
def resize(self):
new_size = self.size * 2
new_table = [[] for _ in range(new_size)]
for bucket in self.table:
for k, v in bucket:
index = hash(k) % new_size
new_table[index].append((k, v))
self.table = new_table
self.size = new_size
def __str__(self):
return str(self.table)
ht = HashTable()
ht.insert("name", "Alice")
ht.insert("age", 25)
ht.insert("city", "Wonderland")
print(ht.get("name"))
print(ht.get("age"))
ht.remove("age")
print(ht.get("age"))
print(ht)