Реализация LRU-кэша
Python
Senior
Авито
01.01.2025
Реализуйте класс `LRUCache`, который хранит ограниченное количество элементов и удаляет самый старый при достижении лимита.
Нельзя использовать `functools.lru_cache`, но можно `OrderedDict`.
Ответы
Решение
```python
from collections import OrderedDict
class LRUCache:
def __init__(self, size):
self.size = size
self.cache = OrderedDict()
def get(self, key):
if key not in self.cache:
return None
self.cache.move_to_end(key)
return self.cache[key]
def set(self, key, value):
if key in self.cache:
self.cache.move_to_end(key)
self.cache[key] = value
if len(self.cache) > self.size:
self.cache.popitem(last=False)
```