Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class FCollection():
- def __init__(self):
- self.items = [] #data
- self.tblIdxLookup = {} #key->index
- self.tblKeyLookup = [] #index->key
- self.tblFreeKeys = [] #freed keys
- def add(self, v):
- if len(self.tblFreeKeys):
- k = self.tblFreeKeys.pop()
- else: k = len(self.tblKeyLookup)
- self.items.append(v)
- self.tblIdxLookup[k] = len(self.tblKeyLookup)
- self.tblKeyLookup.append(k)
- def get(self, idx):
- return self.items[idx]
- def getByKey(self, key):
- return self.items[self.tblIdxLookup[key]]
- def remove(self, idx):
- key = self.tblKeyLookup.pop(idx)
- del self.tblIdxLookup[key]
- self.tblFreeKeys.append(key)
- del self.items[idx]
- def removeByKey(self, key):
- idx = self.tblIdxLookup.pop(key)
- del self.tblKeyLookup[idx]
- self.tblFreeKeys.append(key)
- del self.items[idx]
- def key(self, idx):
- return self.tblKeyLookup[idx]
- def index(self, key):
- return self.tblIdxLookup[key]
- fc = FCollection()
- fc.add("along")
- fc.add("comes")
- fc.add("Mary")
- key = fc.key(1)
- fc.removeByKey(key)
- print fc.get(1)
Advertisement
Add Comment
Please, Sign In to add comment