Unflatten dict to dict with nested dict/arrays
Project description
unflatten - convert flat dict to nested dict/array
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
takes 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.
Authors
History
Release 0.2.0 (2024-09-04)
No substantive code changes from 0.1.1.
Features
- Added type annotations.
Testing
-
Test under python 3.10, 3.11, and 3.12.
-
Fix tox config to cope with the fact that recent tox/virtualenv does not support EOLed versions of python.
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
andcoverage
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
File details
Details for the file unflatten-0.2.0.tar.gz
.
File metadata
- Download URL: unflatten-0.2.0.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
9710bc558882f697bc36a95a97614be296f07c8f8df1bc2b4ef96c189ce5cf84
|
|
MD5 |
4f9bd0d18ec8ca95155f33f8ebf3e087
|
|
BLAKE2b-256 |
e4d5d2ee1ab7fdbc5af182e853391003c862cde05001810b11057d336436da35
|
File details
Details for the file unflatten-0.2.0-py2.py3-none-any.whl
.
File metadata
- Download URL: unflatten-0.2.0-py2.py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
a0afa7ff22313dcc60ff45110b796ed5b4e908614826e8672a9f76d3a20c1f54
|
|
MD5 |
6add18af899e5f5ce1b60379b5f79d5d
|
|
BLAKE2b-256 |
03899030594c356c6327160d0e9d744fa8deb1de5cdd70b94f272eabcce706fa
|