Skip to main content

Multi-key dictionary, supports adding and manipulating key-aliases pointing to shared values

Project description

Alter Ego


Aldict

tests Python 3.x PyPI License Downloads

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)
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)
ad.remove_alias("aa")
ad.remove_alias("bb", "Bbb")
assert len(ad.aliases()) == 0
  • clear_aliases
    (remove all aliases at once)
ad.clear_aliases()
assert len(ad.aliases()) == 0
  • update alias
    (point alias to different key)
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
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))
assert dict(ad.aliased_keys()) == {'a': ['aa', 'ab', 'A'], 'b': ['bb', 'B']}
  • read dictviews
    (dict.keys() and dict.items() include aliased versions)
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
ad.pop("y")
assert list(ad.items()) == [('x', 10), ('Xx', 10)]
  • origin_keys
    (get original keys only)
assert list(ad.origin_keys()) == ['x', 'y']
  • origin_len
    (get original dict length without aliases)
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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aldict-1.0.3.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aldict-1.0.3-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file aldict-1.0.3.tar.gz.

File metadata

  • Download URL: aldict-1.0.3.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for aldict-1.0.3.tar.gz
Algorithm Hash digest
SHA256 194c57fd094b81ef631826ab1d28b2489a1a152f0b15454276b1e73ed1cffdd0
MD5 4f17d1ae09c355ef7a7ed3f9291e7602
BLAKE2b-256 bfbba252a5c8b1e586353ddba86bd1f52bcf1c7dcb83ab5b13bf058f23f9a9f8

See more details on using hashes here.

File details

Details for the file aldict-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: aldict-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for aldict-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e283d9d79f073dcb806664e904e2c5f5f240f7579ad2c2955fba0b892136187a
MD5 9ef8c0580ed52da7071d26b0ab82f830
BLAKE2b-256 ee8bf4228645df08fe640d1b386ec33f9ccdd0518376a5d8342a9eeb5aa48799

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page