We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 4820d68 commit feb9b03Copy full SHA for feb9b03
1 file changed
collections/fifodict.py
@@ -0,0 +1,34 @@
1
+#!/usr/bin/env python
2
+# -*- coding: utf-8 -*-
3
+
4
+from collections import OrderedDict
5
6
+class LastUpdatedOrderedDict(OrderedDict):
7
8
+ def __init__(self, capacity):
9
+ super(LastUpdatedOrderedDict, self).__init__()
10
+ self._capacity = capacity
11
12
+ def __setitem__(self, key, value):
13
+ containsKey = 1 if key in self else 0
14
+ if len(self) - containsKey >= self._capacity:
15
+ last = self.popitem(last=False)
16
+ print 'remove:', last
17
+ if containsKey:
18
+ del self[key]
19
+ print 'set:', (key, value)
20
+ else:
21
+ print 'add:', (key, value)
22
+ OrderedDict.__setitem__(self, key, value)
23
24
+# test
25
26
+d = LastUpdatedOrderedDict(capacity=3)
27
28
+d['A'] = 100
29
+d['B'] = 200
30
+d['C'] = 300
31
+d['D'] = 400
32
+d['E'] = 500
33
34
+print d
0 commit comments