1
2
3
4
5
6
7 import bisect
9 """ maintains a sorted list of a particular number of data elements.
10
11 """
13 self._size = size
14 self.best = [mostNeg]*self._size
15 self.extras = [None]*self._size
16 - def Insert(self,val,extra=None):
17 """ only does the insertion if val fits """
18 if val > self.best[0]:
19 idx = bisect.bisect(self.best,val)
20
21 if idx == self._size:
22 self.best.append(val)
23 self.extras.append(extra)
24 else:
25 self.best.insert(idx,val)
26 self.extras.insert(idx,extra)
27
28 self.best.pop(0)
29 self.extras.pop(0)
30
32 """ returns our set of points """
33 return self.best
35 """ returns our set of extras """
36 return self.extras
37
41 return self.best[which],self.extras[which]
42
46
47 if __name__ == '__main__':
48 import random
49 pts = [int(100*random.random()) for x in range(10)]
50
51 c = TopNContainer(4)
52 for pt in pts:
53 c.Insert(pt,extra=str(pt))
54 print c.GetPts()
55 print c.GetExtras()
56