Орлин обнови решението на 17.04.2012 09:54 (преди над 12 години)
+class Reverter():
+ def inverse(self):
+ inverses = []
+ for key, value in self.items():
+ inverses.append([value, key])
+ self.clear()
+ self.update(inverses)
+
+ def __setitem__(self, key, value):
+ hash(value)
+ other = self.__getByValue(value)
+ if other:
+ del self[other[0]]
+ super().__setitem__(key, value)
+
+ def __init__(self):
+ self.inverse()
+ self.inverse()
+
+ def __getByValue(self, value):
+ for item in self.items():
+ if item[1] == value:
+ return item
+
+ def update(self, *args, **kwargs):
+ dict_ = dict(*args, **kwargs)
+ for item in dict_.items():
+ self.__setitem__(*item)
+
+
+class BiDict(Reverter, dict):
+ def __init__(self, *args, **kwargs):
+ dict.__init__(self, *args, **kwargs)
+ Reverter.__init__(self)
+
+
+b = BiDict(one=1, two=2)
+b.update(three=3, four=4)
+print('______')
+b.update({'sto':100, 'piise':50})