diff options
author | Jay Hutchinson <jlhutch@gmail.com> | 2018-05-06 00:30:20 -0500 |
---|---|---|
committer | Jay Hutchinson <jlhutch@gmail.com> | 2018-05-06 13:23:59 -0500 |
commit | efe9c72e360f4be3b9d3a2daedbc28dde1f71c72 (patch) | |
tree | f2d100f80d277a7a5cc8ca41826e2e7904b9c735 | |
parent | d5b8b87e709b529d803a85408e1ca739613b8334 (diff) | |
download | pylru-efe9c72e360f4be3b9d3a2daedbc28dde1f71c72.tar.gz |
Added pop, popitem, and setdefault methods to lrucache class.
-rw-r--r-- | pylru.py | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -188,6 +188,36 @@ class lrucache(object): for key, value in kwargs.items(): self[key] = value + __defaultObj = object() + def pop(self, key, default=__defaultObj): + if key in self.table: + value = self.peek(key) + del self[key] + return value + + if default is self.__defaultObj: + raise KeyError + + return default + + def popitem(self): + # Make sure the cache isn't empty. + if len(self) < 1: + raise KeyError + + key = self.head.key + value = self.head.value + del self[key] + + return key, value + + def setdefault(self, key, default=None): + if key in self.table: + return self[key] + + self[key] = default + return default + def __iter__(self): # Return an iterator that returns the keys in the cache in order from # the most recently to least recently used. Does not modify the cache's |