Skip to main content

Attribute-access ordered dictionary

Project description

PyPI version Anaconda-Server Badge DOI Test Status codecov

atdict

An attribute-access ordered dictionary


atdict is an attribute-access ordered dictionary. You can use a key name as an attribute to access the value of the dictionary for a key, for example, o.key_name rather than o['key_name']. Only a minimum set of methods are implemented so as to minimize the chances of name conflicts.



Requirement

  • Python 3.6, 3.7, 3.8, or 3.9

Install

You can install with conda from conda-forge:

conda install -c conda-forge atdict

or with pip:

$ pip install -U atdict

How to use

Import atdict

Import atdict from the package atdict.

from atdict import atdict

Initialize atdict

You can initialize an atdict with any arguments that can initialize collections.OrderedDict.

For example:

o1 = atdict([('foo', 40), ('bar', 'ham')])
print(o1)

It will print.

atdict(foo=40, bar='ham')

An atdict can be also initialized with another atdict.

o2 = atdict(o1)
print(o2)

The o2 is initialized with a (shallow) copy of the contents of o1.

atdict(foo=40, bar='ham')

Access to a value

Yon can use a key name as an attribute of atdict.

print(o1.foo)

This will print the value for the key foo, which is 40.

40

Modify a value

To modify a value, you can assign a new value to the attribute.

o1.foo = 50
print(o1)
atdict(foo=50, bar='ham')

The value for the key foo changed from 40 to 50.

Add a key

To add a key, you can also assign a value to the attribute

o1.baz = 'eggs'
print(o1)
atdict(foo=50, bar='ham', baz='eggs')

Delete a key

del deletes a key.

del o1.bar
print(o1)
atdict(foo=50, baz='eggs')

Copy and deepcopy

A copy will be created if atdict is initialized with another atdict. However, this will be a shallow copy.

l = [1, 2]
o1 = atdict([('foo', l)])
o2 = atdict(o1)
print(o2.foo is o1.foo)
True

To make a deep copy, you can use copy.deepcopy().

import copy
l = [1, 2]
o1 = atdict([('foo', l)])
o2 = copy.deepcopy(o1)
print(o2)
atdict(foo=[1, 2])

o2.foo and o1.foo are not the same object.

print(o2.foo is o1.foo)
False

Pickle

An atdict is picklable as long as all values are picklable.

import pickle
o1 = atdict([('foo', 40), ('bar', 'ham')])
p1 = pickle.dumps(o1)
o2 = pickle.loads(p1)
print(o2)
atdict(foo=40, bar='ham')

License

  • atdict is licensed under the BSD license.

Contact

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

atdict-0.9.4.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

atdict-0.9.4-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file atdict-0.9.4.tar.gz.

File metadata

  • Download URL: atdict-0.9.4.tar.gz
  • Upload date:
  • Size: 21.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for atdict-0.9.4.tar.gz
Algorithm Hash digest
SHA256 52fa9afbd80cd66baf20b8a8f22995ca7579f1255cbc22a66a38c2aa91fbb39c
MD5 4bff194ef69135da2d8c719b4a8559ec
BLAKE2b-256 6181300e1b4adf35477483452f4d6eae2419e6e2198549132a1d637dfc5fa998

See more details on using hashes here.

Provenance

File details

Details for the file atdict-0.9.4-py3-none-any.whl.

File metadata

  • Download URL: atdict-0.9.4-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for atdict-0.9.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a8521b2257ad5fca4a4e0f2e0eaa222684f69b91facc8ca5a98ff561a8a358f5
MD5 3fb90720263087dbef19d3f96d29b35a
BLAKE2b-256 aadbfb55b27dcc912c7b556e6333648a1ad914d155fa8a9219e81173eb922ecf

See more details on using hashes here.

Provenance

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