Dictionary wrapper for quick access to deeply nested keys.
Project description
Info: | Dictionary wrapper for quick access to deeply nested keys. |
---|---|
Author: | Paweł Zadrożny @pawelzny <pawel.zny@gmail.com> |
Features
- Simple wrapper around python dictionary and dict like objects
- Two wrappers with the same dict are considered equal
- Access to deeply nested keys with dot notation: dot['deeply.nested.key']
- Create, read, update and delete nested keys of any length
- Expose all dictionary methods like .get, .pop, .keys and other
- Access dicts in lists by index dot['parents.0.first_name']
- key=value caching to speed up lookups and low down memory consumption
- support for setting value in multidimensional lists
- support for accessing lists with slices
Installation
pip install dotty-dict
Documentation
- Full documentation: http://dotty-dict.readthedocs.io
- Public API: http://dotty-dict.readthedocs.io/en/latest/api.html
- Examples and usage ideas: http://dotty-dict.readthedocs.io/en/latest/examples.html
TODO
Waiting for your feature requests ;)
Quick Example
Create new dotty using factory function.
>>> from dotty_dict import dotty >>> dot = dotty({'plain': {'old': {'python': 'dictionary'}}}) >>> dot['plain.old'] {'python': 'dictionary'}
You can start with empty dotty
>>> from dotty_dict import dotty >>> dot = dotty() >>> dot['very.deeply.nested.thing'] = 'spam' >>> dot Dotty(dictionary={'very': {'deeply': {'nested': {'thing': 'spam'}}}}, separator='.', esc_char='\\') >>> dot['very.deeply.spam'] = 'indeed' >>> dot Dotty(dictionary={'very': {'deeply': {'nested': {'thing': 'spam'}, 'spam': 'indeed'}}}, separator='.', esc_char='\\') >>> del dot['very.deeply.nested'] >>> dot Dotty(dictionary={'very': {'deeply': {'spam': 'indeed'}}}, separator='.', esc_char='\\') >>> dot.get('very.not_existing.key') None
NOTE: Using integer in dictionary keys will be treated as embedded list index.
Install for development
Install dev dependencies
$ make install
Testing
$ make test
Or full tests with TOX:
$ make test-all
Limitations
In some very rare cases dotty may not work properly.
- When nested dictionary has two keys of different type, but with the same value. In that case dotty will return dict or list under random key with passed value.
- Keys in dictionary may not contain dots. If you need to use dots, please specify dotty with custom separator.
- Nested keys may not be bool type. Bool type keys are only supported when calling keys with type defined value (e.g. dot[True], dot[False]).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size dotty_dict-1.3.0.tar.gz (32.3 kB) | File type Source | Python version None | Upload date | Hashes View |