diff options
| author | Scott Gasch <[email protected]> | 2021-09-27 08:47:39 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2021-09-27 08:47:39 -0700 |
| commit | 37d09d6ac30c8c66477149b7c73139c3e6782468 (patch) | |
| tree | e55c45fd4a4d2f66eef1b33defe039ad579ebdcb /bidict.py | |
| parent | a8da0e2eca96cedaf582bc41ab82ec4ff87e443c (diff) | |
Compress small text messages by just restricting the alphabet. Adds bidict.
Diffstat (limited to 'bidict.py')
| -rw-r--r-- | bidict.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/bidict.py b/bidict.py new file mode 100644 index 0000000..5ba3fc3 --- /dev/null +++ b/bidict.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +class bidict(dict): + def __init__(self, *args, **kwargs): + super(bidict, self).__init__(*args, **kwargs) + self.inverse = {} + for key, value in self.items(): + self.inverse.setdefault(value, []).append(key) + + def __setitem__(self, key, value): + if key in self: + self.inverse[self[key]].remove(key) + super(bidict, self).__setitem__(key, value) + self.inverse.setdefault(value, []).append(key) + + def __delitem__(self, key): + self.inverse.setdefault(self[key], []).remove(key) + if self[key] in self.inverse and not self.inverse[self[key]]: + del self.inverse[self[key]] + super(bidict, self).__delitem__(key) |
