# bidict.py # # Bidirectional map class BiDict: def __init__(self): self.forward={} self.backward={} def Add(self, one, two): self.forward[one]=two self.backward[two]=one def __len__(self): return len(self.forward) def __getitem__(self, key): return self.GetForward(key) def __delitem__(self, key): if self.forward.has_key(key): del self.backward[self.forward[key]] del self.forward[key] else: del self.forward[self.backward[key]] del self.backward[key] def GetForward(self, key): return self.forward[key] def HasForward(self, key): return self.forward.has_key(key) def GetBackward(self, key): return self.backward[key] def HasBackward(self, key): return self.backward.has_key(key)