MCPcopy Index your code
hub / github.com/TheAlgorithms/Python / LRUCache

Class LRUCache

other/lru_cache.py:146–330  ·  view source on GitHub ↗

LRU Cache to store a given capacity of data. Can be used as a stand-alone object or as a function decorator. >>> cache = LRUCache(2) >>> cache.put(1, 1) >>> cache.put(2, 2) >>> cache.get(1) 1 >>> cache.list DoubleLinkedList, Node: key: None, val: None,

Source from the content-addressed store, hash-verified

144
145
146class LRUCache[T, U]:
147 """
148 LRU Cache to store a given capacity of data. Can be used as a stand-alone object
149 or as a function decorator.
150
151 >>> cache = LRUCache(2)
152
153 >>> cache.put(1, 1)
154 >>> cache.put(2, 2)
155 >>> cache.get(1)
156 1
157
158 >>> cache.list
159 DoubleLinkedList,
160 Node: key: None, val: None, has next: True, has prev: False,
161 Node: key: 2, val: 2, has next: True, has prev: True,
162 Node: key: 1, val: 1, has next: True, has prev: True,
163 Node: key: None, val: None, has next: False, has prev: True
164
165 >>> cache.cache # doctest: +NORMALIZE_WHITESPACE
166 {1: Node: key: 1, val: 1, has next: True, has prev: True, \
167 2: Node: key: 2, val: 2, has next: True, has prev: True}
168
169 >>> cache.put(3, 3)
170
171 >>> cache.list
172 DoubleLinkedList,
173 Node: key: None, val: None, has next: True, has prev: False,
174 Node: key: 1, val: 1, has next: True, has prev: True,
175 Node: key: 3, val: 3, has next: True, has prev: True,
176 Node: key: None, val: None, has next: False, has prev: True
177
178 >>> cache.cache # doctest: +NORMALIZE_WHITESPACE
179 {1: Node: key: 1, val: 1, has next: True, has prev: True, \
180 3: Node: key: 3, val: 3, has next: True, has prev: True}
181
182 >>> cache.get(2) is None
183 True
184
185 >>> cache.put(4, 4)
186
187 >>> cache.get(1) is None
188 True
189
190 >>> cache.get(3)
191 3
192
193 >>> cache.get(4)
194 4
195
196 >>> cache
197 CacheInfo(hits=3, misses=2, capacity=2, current size=2)
198
199 >>> @LRUCache.decorator(100)
200 ... def fib(num):
201 ... if num in (1, 2):
202 ... return 1
203 ... return fib(num - 1) + fib(num - 2)

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected