Unflatten dict to dict with nested dict/arrays
Project description
Description
This package provides a function which can unpack a flat dictionary into a structured dict with nested sub-dicts and/or sub-lists.
Development takes place on github. The package is installable from PyPI
Synopsis
Nested dicts:
>>> from unflatten import unflatten >>> unflatten({'foo.bar': 'val'}) {'foo': {'bar': 'val'}}
Nested list:
>>> unflatten({'foo[0]': 'x', 'foo[1]': 'y'}) {'foo': ['x', 'y']}
Nested lists and dicts, intermixed:
>>> unflatten({ ... 'foo[0][0]': 'a', ... 'foo[0][1]': 'b', ... 'foo[1].x': 'c', ... }) {'foo': [['a', 'b'], {'x': 'c'}]}
Notes
Unflatten take a single argument which should either be a dict (or an object with a dict-like .items() or .iteritems() method) or a sequence of (key, value) pairs. All keys in the dict or sequence must be strings. (Under python 2, keys must be instances of basestring; under python 3, keys just be instances of str.)
Unflatten always returns a dict. By way of example:
>>> unflatten([('[0]', 'x')]) {'': ['x']}
For list-valued nodes, all indexes must be present in the input (flattened) mapping, otherwise a ValueError will be thrown:
>>> unflatten({'a[0]': 'x', 'a[2]': 'y'}) Traceback (most recent call last): ... ValueError: missing key 'a[1]'
See Also
The morph and flattery packages purport to implement similar functions.
History
Release 0.1.1 (2021-08-16)
Nits
Fix backslashes in docstrings
Packaging
PEP517-ize the packaging
Use setuptools-scm to maintain version numbers
Testing
Test under Python 3.7, 3.8, 3.9 and PyPy 3.7. Drop testing for Python 3.4 & 3.5.
Pin pip version for pypy2 (see pip #8653)
Clean up and modernize the tox lint and coverage environments
Release 0.1 (2018-01-17)
No code changes.
This package is now deemed “production ready” (though your mileage may vary.)
Release 0.1b1 (2018-01-09)
Initial release.
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.
Source Distribution
Built Distribution
Hashes for unflatten-0.1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42de0eae963f34cbb8d80a35cdab962f723b879a3e93c603fac9ca6062e96de3 |
|
MD5 | ce3a7a946d8e88d9183714dae7479631 |
|
BLAKE2b-256 | bc084d3ee9406a954ecea4598639d387f993a73a6ad2712b60838ae2d6e78738 |