Hash Table

class HashTable:
    def __init__(self):
        self.datamap = [None] * 5

    def __hash(self, key):
        myindex = 0
        for letters in key:
            myindex = (myindex + ord(letters) * 23) % len(self.datamap)
        return myindex

    def print_table(self):
        for i, val in enumerate(self.datamap):
            print(f"{i}: {val if val is not None else 'Empty'}")
            if val is not None:
                for subitem in val:
                    print(f"  {subitem[0]}: {subitem[1]}")

    def set_item(self, key, value):
        index = self.__hash(key)
        if self.datamap[index] is None:
            self.datamap[index] = []
        self.datamap[index].append([key, value])

    def get_item(self, key):
        if self.datamap is not None:
            index = self.__hash(key)
            for item in self.datamap[index]:
                if item[0] == key:
                    return item[1]