A Python library to flatten a dictionary with nested dictionnaries and lists
Project description
dictflat
A Python library to flatten a dictionary with nested dictionnaries and lists
Use cases
Transform a dictionary structure into a new organization ready to be inserted into a relational database.
Installation
poetry add dictflat
Quick start
>>> from dictflat import DictFlat
>>> import json
>>> r = DictFlat(
root_key="root"
).flat(
d={
"name": "John",
"pers_id": 12,
"birth": {
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA"
},
"date": "10/06/1976 01:10:35"
},
"Phone_Numbers": [
{"type": "home", "number": "555-1234"},
{"type": "work", "number": "555-5678"},
],
}
)
>>> print("%s" % json.dumps(r, indent=2))
{
"root": [
{
"__id": "662783f7-b1a0-4e8c-9de9-f3a72a896d4c",
"name": "John",
"pers_id": 12
}
],
"root.birth": [
{
"__id": "e72d549a-89f5-4208-99c0-4ce3493cbf9e",
"__ref__root": "662783f7-b1a0-4e8c-9de9-f3a72a896d4c",
"date": "10/06/1976 01:10:35"
}
],
"root.birth.address": [
{
"__id": "cc489c03-82ca-4b6e-a620-32c9c4be236c",
"__ref__root.birth": "e72d549a-89f5-4208-99c0-4ce3493cbf9e",
"street": "123 Main St",
"city": "Anytown",
"state": "CA"
}
],
"root.Phone_Numbers": [
{
"__id": "ba1560de-9c4c-4886-b4ca-684e0a7e5df0",
"__ref__root": "662783f7-b1a0-4e8c-9de9-f3a72a896d4c",
"type": "home",
"number": "555-1234"
},
{
"__id": "f1032025-6c7d-4341-8e6a-f0dce2374388",
"__ref__root": "662783f7-b1a0-4e8c-9de9-f3a72a896d4c",
"type": "work",
"number": "555-5678"
}
]
}
The result is always a dictionary where each key is a reference to the original dictionary.
- In this example, the original root document is identified by the token “
root” (the root key) and the "address" sub-dictionary is identified by “root.address”.
Each dictionary value is always a list. See below for more examples with more than one element in lists.
Each sub-dictionnary have:
- an unique field named "
__id" (like a primary key) - except for root, a "
__ref__root" who contains the "__id" value of parent dictionnary;- the "
root" token in "__ref__root" field name is directly a reference to the global result dictionnary.
- the "
Documentation
All examples explained in documentation come from module tests.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dictflat-0.2.0.tar.gz.
File metadata
- Download URL: dictflat-0.2.0.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.7 Linux/6.16.8-100.fc41.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
168a2f0909bcf63705144e193f317fd639bdb4531161d9120a85e892e5ad8b3a
|
|
| MD5 |
38621fc2a566a6c8c951d45fe47664ae
|
|
| BLAKE2b-256 |
6cb8d1ab5df8f9fda668b743be988a4da55c5481b74b22a9349814d09dfe159c
|
File details
Details for the file dictflat-0.2.0-py3-none-any.whl.
File metadata
- Download URL: dictflat-0.2.0-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.13.7 Linux/6.16.8-100.fc41.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e344b66f891bb9354f1c33d6a05163afc169adcf8c64ffe97f4484ffa4a1ed7
|
|
| MD5 |
6ca1355d469871043d95e52b40668f0f
|
|
| BLAKE2b-256 |
2096349ce9bf11271e634e14385c556cf6ace7b58a6465f16598ff291f2e4767
|