From 7b4fa6eaacbbb0c0258e3d9294ffba27e43a2b4f Mon Sep 17 00:00:00 2001 From: pratiamalden Date: Sun, 7 Dec 2025 16:46:11 +0000 Subject: [PATCH] Implement an LRU cache --- Sprint-2/implement_lru_cache/lru_cache.py | 25 +++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Sprint-2/implement_lru_cache/lru_cache.py b/Sprint-2/implement_lru_cache/lru_cache.py index e69de29..83fe918 100644 --- a/Sprint-2/implement_lru_cache/lru_cache.py +++ b/Sprint-2/implement_lru_cache/lru_cache.py @@ -0,0 +1,25 @@ +from collections import OrderedDict +from typing import Any, Optional +class LruCache: + def __init__(self, limit: int): + if limit <= 0: + raise ValueError("Limit must be a positive number") + + self._limit = limit + self.cache = OrderedDict() + + def get(self, key: Any) -> Optional[Any]: # lookup the v previously associated with k + if key not in self.cache: + return None + + self.cache.move_to_end(key) + return self.cache[key] + + def set(self, key: Any, value: Any) -> None: # should associate k with passed v + if key in self.cache: + self.cache[key] = value + self.cache.move_to_end(key) + else: + self.cache[key] = value + if len(self.cache) > self._limit: + self.cache.popitem(last=False) \ No newline at end of file