Advertisement
Guest User

Untitled

a guest
Apr 18th, 2014
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.69 KB | None | 0 0
  1. from collections import Counter
  2.  
  3. class FrequencySizedDict(dict):
  4. def __init__(self, size=1000):
  5. dict.__init__(self)
  6. self._maxsize = size
  7. self._counter = Counter()
  8. def __getitem__(self, key):
  9. self._counter[key] += 1
  10. return dict.__getitem__(self, key)
  11. def resize(self, size):
  12. keys = list(self._counter.most_common(size))
  13. items = [(key, dict.__getitem__(self, key)) for key in keys]
  14. self.clear()
  15. dict.update(self, items)
  16. def __setitem__(self, key, value):
  17. if len(self._queue) >= self._maxsize:
  18. self.resize(self._maxsize/2)
  19. self._counter[key] += 1
  20. dict.__setitem__(self, key, value)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement