4 def __init__(self, *args, **kwargs):
5 super(bidict, self).__init__(*args, **kwargs)
7 for key, value in self.items():
8 self.inverse.setdefault(value, []).append(key)
10 def __setitem__(self, key, value):
12 self.inverse[self[key]].remove(key)
13 super(bidict, self).__setitem__(key, value)
14 self.inverse.setdefault(value, []).append(key)
16 def __delitem__(self, key):
17 self.inverse.setdefault(self[key], []).remove(key)
18 if self[key] in self.inverse and not self.inverse[self[key]]:
19 del self.inverse[self[key]]
20 super(bidict, self).__delitem__(key)