libb.bidict

class bidict(*args, **kwargs)[source]

Bases: dict

Bidirectional dictionary that allows multiple keys with the same value.

Maintains an inverse mapping from values to lists of keys that enables bidirectional lookup.

Basic Usage:

>>> bd = bidict({'a': 1, 'b': 2})
>>> bd
{'a': 1, 'b': 2}
>>> bd.inverse
{1: ['a'], 2: ['b']}

Multiple Keys with Same Value:

>>> bd['c'] = 1
>>> bd
{'a': 1, 'b': 2, 'c': 1}
>>> bd.inverse
{1: ['a', 'c'], 2: ['b']}

Removing Keys Updates Inverse:

>>> del bd['c']
>>> bd
{'a': 1, 'b': 2}
>>> bd.inverse
{1: ['a'], 2: ['b']}
>>> del bd['a']
>>> bd
{'b': 2}
>>> bd.inverse
{2: ['b']}

Changing Values Updates Inverse:

>>> bd['b'] = 3
>>> bd
{'b': 3}
>>> bd.inverse
{2: [], 3: ['b']}
inverse