Files
2026-10-19 20:29:13 +02:00

46 lines
1.4 KiB
Python

class Student:
def __init__(self, number, name, email):
self.number = number
self.name = name
self.email = email
self.MAX_HASH =100000
def __str__(self):
return f"Student: {self.name} ({self.email}, {self.number})"
def __hash__(self):
return (id(self.number) + id(self.name) + id(self.email)) % self.MAX_HASH
class HashTable:
def __init__(self, elements):
self.bucket_size = len(elements) * 3
self.buckets = [[] for i in range(self.bucket_size)]
self._assign_buckets(elements)
self.insertion_order = []
def __iter__(self):
ret_list = []
for index, obj_id in self.insertion_order:
for obj in self.buckets[index]:
if id(obj) == obj_id:
ret_list.append(obj)
return iter(ret_list)
def _assign_buckets(self, elements):
for obj in elements:
hashed_value = hash(obj)
index = hashed_value % self.bucket_size
self.buckets[index].append(obj)
self.insertion_order.insert((index, id(obj)))
def get_value(self,input_key):
return self.buckets[input_key]
def main():
arthur = Student("097", "Arthur", "artur@blade.hex")
eleanor = Student("098", "Eleanor", "eleano@plague.hex")
aoi = Student("099", "Aoi", "aoi@magnet.hex")
hash_table = HashTable([arthur,eleanor,aoi])