Skip to content

Commit f4aae27

Browse files
committed
fix: _update method check value changing to key or already exist
1 parent cbd1305 commit f4aae27

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

MirrorDict/__init__.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -436,15 +436,17 @@ def _update(self, key, val):
436436
val_old = self._key[key]
437437
if val_old == val:
438438
return
439-
self._val.pop(val_old)
439+
key_old = self._val.pop(val_old)
440+
if key_old != key:
441+
self._key.pop(key_old)
440442

441-
elif val in self._val: # val already defined, update key to it
442-
self._key.pop(self._val[val])
443-
444-
elif key in self._val: # key in _val, so need to reverse storage direction
443+
if key in self._val: # key in _val, so need to reverse storage direction
445444
self._key.pop(self._val.pop(key))
446445

447-
elif val in self._key: # val in _key, so need to reverse storage direction
446+
if val in self._val: # val already defined, update key to it
447+
self._key.pop(self._val[val])
448+
449+
if val in self._key: # val in _key, so need to reverse storage direction
448450
self._val.pop(self._key.pop(val))
449451

450452
self._key[key] = val

0 commit comments

Comments
 (0)