from collections import OrderedDict from typing import Any class LRUCache: def __init__(self, capacity: int): self.cache = OrderedDict() self.capacity = capacity def get(self, key: Any) -> Any: if key not in self.cache: return None else: self.cache.move_to_end(key) # move the key to the end of the OrderedDict return self.cache[key] def put(self, key: Any, value: Any) -> None: if key in self.cache: self.cache.move_to_end(key) self.cache[key] = value if len(self.cache) > self.capacity: self.cache.popitem(last=False) # pop the first item