https://github.com/kaliv0/aldict
Multi-key dictionary
https://github.com/kaliv0/aldict
key-alias multidict multikey-map
Last synced: 29 days ago
JSON representation
Multi-key dictionary
- Host: GitHub
- URL: https://github.com/kaliv0/aldict
- Owner: kaliv0
- License: mit
- Created: 2024-12-14T08:52:30.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-04-20T11:20:27.000Z (about 2 months ago)
- Last Synced: 2025-05-08T00:04:39.009Z (29 days ago)
- Topics: key-alias, multidict, multikey-map
- Language: Python
- Homepage: https://pypi.org/project/aldict/
- Size: 93.8 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
---
# Aldict[](https://github.com/kaliv0/aldict/actions/workflows/ci.yml)

[](https://pypi.org/project/aldict/)
[](https://github.com/kaliv0/aldict/blob/main/LICENSE)
[](https://pepy.tech/projects/aldict)Multi-key dictionary, supports adding and manipulating key-aliases pointing to shared values
---
## How to use- add_alias
(pass key as first parameter and alias(es) as variadic params)
```python
ad = AliasDict({"a": 1, "b": 2})
ad.add_alias("a", "aa")
ad.add_alias("b", "bb", "Bbb")
assert ad["a"] == ad["aa"] == 1
assert ad["b"] == ad["bb"] == ad["Bbb"] == 2
```
- remove_alias
(pass alias(es) to be removed as variadic parameters)
```python
ad.remove_alias("aa")
ad.remove_alias("bb", "Bbb")
assert len(ad.aliases()) == 0
```
- clear_aliases
(remove all aliases at once)
```python
ad.clear_aliases()
assert len(ad.aliases()) == 0
```
- update alias
(point alias to different key)
```python
ad = AliasDict({"a": 1, "b": 2})
ad.add_alias("a", "ab")
assert list(ad.items()) == [('a', 1), ('b', 2), ('ab', 1)]ad.add_alias("b", "ab")
assert list(ad.items()) == [('a', 1), ('b', 2), ('ab', 2)]
```
- read all aliases
```python
ad = AliasDict({"a": 1, "b": 2})
ad.add_alias("a", "aa")
ad.add_alias("b", "bb", "B")
ad.add_alias("a", "ab", "A")
assert list(ad.aliases()) == ['aa', 'bb', 'B', 'ab', 'A']
```
- aliased_keys
(read keys with corresponding alias(es))
```python
assert dict(ad.aliased_keys()) == {'a': ['aa', 'ab', 'A'], 'b': ['bb', 'B']}
```
- read dictviews
(dict.keys() and dict.items() include aliased versions)
```python
ad = AliasDict({"x": 10, "y": 20})
ad.add_alias("x", "Xx")
ad.add_alias("y", "Yy", "xyz")ad.keys()
ad.values()
ad.items()# dict_keys(['x', 'y', 'Xx', 'Yy', 'xyz'])
# dict_values([10, 20])
# dict_items([('x', 10), ('y', 20), ('Xx', 10), ('Yy', 20), ('xyz', 20)])
```
- remove key and aliases
```python
ad.pop("y")
assert list(ad.items()) == [('x', 10), ('Xx', 10)]
```
- origin_keys
(get original keys only)
```python
assert list(ad.origin_keys()) == ['x', 'y']
```
- origin_len
(get original dict length without aliases)
```python
ad = AliasDict({"a": 1, "b": 2})
ad.add_alias("a", "aa")
assert list(ad.keys()) == ["a", "b", "aa"]
assert len(ad) == 3
assert ad.origin_len() == 2
```