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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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