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 py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page