Skip to content

Commit feb9b03

Browse files
committed
add FIFO dict
1 parent 4820d68 commit feb9b03

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

collections/fifodict.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)