Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import Counter
- class FrequencySizedDict(dict):
- def __init__(self, size=1000):
- dict.__init__(self)
- self._maxsize = size
- self._counter = Counter()
- def __getitem__(self, key):
- self._counter[key] += 1
- return dict.__getitem__(self, key)
- def resize(self, size):
- keys = list(self._counter.most_common(size))
- items = [(key, dict.__getitem__(self, key)) for key in keys]
- self.clear()
- dict.update(self, items)
- def __setitem__(self, key, value):
- if len(self._queue) >= self._maxsize:
- self.resize(self._maxsize/2)
- self._counter[key] += 1
- dict.__setitem__(self, key, value)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement