cache

5/21/2025, 3:21:13 PM PST

6/20/2025, 3:21:12 PM PST

    def get(self, key):
        found_itr = None
        if key in self.cache_map:
            found_itr = self.cache_map[key]
        else:
            return -1

        list_iterator = found_itr
        self.cache_list.move_to_head(found_itr)

        return list_iterator.pair[1]

    # Adds a new key-value pair or updates an existing key with a new value
    def set(self, key, value):
        if key in self.cache_map:
            found_iter = self.cache_map[key]
            self.cache_list.move_to_head(found_iter)
            found_iter.pair[1] = value
            return

        if len(self.cache_map) == self.cache_capacity:
            key_tmp = self.cache_list.get_tail().pair[0]
            self.cache_list.remove_tail()
            del self.cache_map[key_tmp]

        self.cache_list.insert_at_head([key, value])
        self.cache_map[key] = self.cache_list.get_head()