Skip to main content

Attribute dictionary implementation that allow get access to their elements by keys (as native dict) and attributes.

Project description

Attribute dictionary implementation that allow get access to their elements by keys (as native dict) and attributes.

Installation:

pip install attrd

Usage:

    from attrd import AttrDict

    a = AttrDict(key1=123)

    # Set value by attribute
    a.key2 = 123

    # Set value by key
    a['key3'] = 123

    # Set and delete value by attribute
    a.key4 = 123
    del a.key4

    # Set and delete value by key
    a['key5'] = 123
    del a['key5']

    print(a) # -> {'key1': 123, 'key2': 123, 'key3': 123}

Convert existed dict to AttrDict:

    print(AttrDict({'key1': 123, 'key2': 123})) # -> {'key1': 123, 'key2': 123}

    print(AttrDict(**{'key1': 123, 'key2': 123})) # -> {'key1': 123, 'key2': 123}

Nested level:

    d = {
        'key1': {
            'sub_key1': 123,
            'sub_key2': {
                'deep_key': 'abc'
            }
        }
    }

    d = AttrDict(d)
    d.key1.sub_key3 = 123

    print(d.key1) # -> {'sub_key1': 123, 'sub_key2': {'deep_key': 'abc'}, 'sub_key3': 123}
    print(d.key1.sub_key1) # -> 123
    print(d.key1.sub_key2.deep_key) # -> abc

    del d.key1.sub_key2
    print(d) # -> {'key1': {'sub_key1': 123, 'sub_key3': 123}}

Nested values with kwargs:

    d = AttrDict(key1={'sub_key1': 123, 'sub_key2': 123})

    print(d) # -> {'key1': {'sub_key1': 123, 'sub_key2': 123}}
    print(d.key1.sub_key1) # -> 123

    del d.key1.sub_key2
    print(d) # -> {'key1': {'sub_key1': 123}}

Dicts in lists:

    d = AttrDict({
        'key1': [
            {'sub_key1': 123, 'sub_key2': 456},
            {'sub_key1': 123, 'sub_key2': 456},
        ]
    })

    del d.key1[0].sub_key2, d.key1[1].sub_key1
    print(d) # -> {'key1': [{'sub_key1': 123}, {'sub_key2': 456}]}
    print(d.key1[0].sub_key1) # -> 123

Iterate items:

    g = AttrDict(a=1, b=2, c=3, items=[10, 11, 12])

    print(g.items) # -> <built-in method items of AttrDict>
    print(g.get('items')) # -> [10, 11, 12]

    for k, v in g.items():
        print(k, v)

    # a 1
    # b 2
    # c 3

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

attrd-0.0.4.tar.gz (3.0 kB view details)

Uploaded Source

Built Distribution

attrd-0.0.4-py3-none-any.whl (2.9 kB view details)

Uploaded Python 3

File details

Details for the file attrd-0.0.4.tar.gz.

File metadata

  • Download URL: attrd-0.0.4.tar.gz
  • Upload date:
  • Size: 3.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.1

File hashes

Hashes for attrd-0.0.4.tar.gz
Algorithm Hash digest
SHA256 696921c5e5804852e5958681eaffbcae38abc1ccecd0ffdec0bdfeaed9e47e6b
MD5 147f1ec609b6f55d87c708eb48f3efda
BLAKE2b-256 ea0abd435bf67280f57af9033a52d4c9aca11bf32857aeb7a454e02b3a68d717

See more details on using hashes here.

File details

Details for the file attrd-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: attrd-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 2.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.1

File hashes

Hashes for attrd-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f35f6d2f66fd6d6abd7928873036bcff03b32eca50405d6930e9daa22416320e
MD5 fed90cb339d31703f79533ba4724cda4
BLAKE2b-256 40cbb4d4dfb0b7f5dafde8f7a58f222d31a0d412a9e026361c0a83c9ecfce6dd

See more details on using hashes here.

Supported by

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