1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
FlatDict
========
|Version| |Status| |Coverage| |License|
``flatdict`` is a Python module for interacting with nested dicts as a single
level dict with delimited keys. ``flatdict`` supports Python 3.12+.
Jump to :ref:`installation`, :ref:`example`, or :ref:`docs`.
*For example:*
.. code-block:: python
value = flatdict.FlatDict({'foo': {'bar': 'baz', 'qux': 'corge'}})
*can be accessed as:*
.. code-block:: python
value == {'foo:bar': 'baz', 'foo:qux': 'corge'}
*values can be accessed as:*
.. code-block:: python
print(foo['foo:bar'])
# or
print(foo['foo']['bar'])
Additionally, lists and tuples are also converted into dicts using enumerate(),
using the :py:class:`~flatdict.FlatterDict` class.
*For example:*
.. code-block:: python
value = flatdict.FlatterDict({'list': ['a', 'b', 'c']})
*will be flattened as follows:*
.. code-block:: python
value == {'list:0': 'a', 'list:1': 'b', 'list:2': 'c'}
.. _installation:
Installation
------------
.. code-block:: bash
$ pip install flatdict
Versioning
----------
This package attempts to use semantic versioning. API changes are indicated
by the major version, non-breaking improvements by the minor, and bug fixes
in the revision.
It is recommended that you pin your targets to greater or equal to the current
version and less than the next major version.
.. _example:
Example Use
-----------
:py:class:`flatdict.FlatDict`
.. code-block:: python
import pprint
import flatdict
flat = flatdict.FlatDict(
{'foo': {'bar': {'baz': 0,
'qux': 1,
'corge': 2},
'grault': {'baz': 3,
'qux': 4,
'corge': 5}},
'garply': {'foo': 0, 'bar': 1, 'baz': 2, 'qux': {'corge': 3}}})
print(flat['foo:bar:baz'])
flat['test:value:key'] = 10
del flat['test']
for key in flat:
print(key)
for value in flat.itervalues():
print(value)
pprint.pprint(flat.as_dict())
pprint.pprint(dict(flat))
print(flat == flat.as_dict())
:py:class:`flatdict.FlatterDict`
.. code-block:: python
import flatdict
value = flatdict.FlatterDict({'list': ['a', 'b', 'c']})
for key, value in value.items():
print(key, value)
.. _docs:
API Documentation
-----------------
.. automodule:: flatdict
:members:
:undoc-members:
:inherited-members:
.. |Version| image:: https://img.shields.io/pypi/v/flatdict.svg?
:target: https://pypi.python.org/pypi/flatdict
.. |Status| image:: https://github.com/gmr/flatdict/workflows/Testing/badge.svg
:target: https://github.com/gmr/flatdict/actions
:alt: Build Status
.. |Coverage| image:: https://img.shields.io/codecov/c/github/gmr/flatdict.svg?
:target: https://codecov.io/github/gmr/flatdict?branch=master
.. |License| image:: https://img.shields.io/pypi/l/flatdict.svg?
:target: https://flatdict.readthedocs.org
|