A specialized dictionary unpacking tool that allows you to expand a dictionary by unpacking internal arrays or list values, generating a list of dictionaries. Each dictionary in the list will contain a copy of all key-value pairs. This tool is designed to split arrays within JSON data into multiple records, making it easier to insert into a database.
Project description
What does this tool do?
A specialized dictionary splitting tool that allows you to unpack a dictionary from its internal array or list values and generate a list. Each list will have a complete copy of all key-value pairs. It's somewhat similar to a matrix. This tool is designed to split arrays within JSON data into multiple records, making it easier to insert into a database.
Example
for list
data = {
"id": 1,
"name": "John",
"subject": [{"id": 22, "des": "math"}, {"id": 23, "des": "art"}]
}
Allow overriding parent's same-named key-value pairs by default.
unpack(data, ["subject"])
Output:
[{'id': 22, 'name': 'John', 'des': 'math'},
{'id': 23, 'name': 'John', 'des': 'art'}]
Forbid overriding parent's same-named key-value pairs.
unpack(data, ["subject"], ".")
Output:
[{'id': 1, 'name': 'John', 'subject.id': 1, 'subject.name': 'John'},
{'id': 1, 'name': 'John', 'subject.id': 1, 'subject.name': 'John'}]
An empty list will be returned when a non-existent path is passed in.
unpack(data, ["subject", "name"], ".")
Output:
[]
For double-layer or multi-layer nesting
data = {
"id": 1,
"name": "John",
"subject": [{
"subjectid": 22,
"des": [{"key": "a"},
{"key": "b"}]
}, {"subjectid": 23,
"des": [{"key": "a"},
{"key": "e"}]
}]
}
unpack(data, ["subject"])
Output:
[
{'id': 1, 'name': 'John', 'subjectid': 22, 'des': [{'key': 'a'}, {'key': 'b'}]},
{'id': 1, 'name': 'John', 'subjectid': 23, 'des': [{'key': 'a'}, {'key': 'e'}]}
]
unpack(data, ["subject", "des"])
Output:
[
{'id': 1, 'name': 'John', 'subjectid': 22, 'key': 'a'},
{'id': 1, 'name': 'John', 'subjectid': 22, 'key': 'b'},
{'id': 1, 'name': 'John', 'subjectid': 23, 'key': 'a'},
{'id': 1, 'name': 'John', 'subjectid': 23, 'key': 'e'}
]
If it is empty, override the same-named key-value pairs in the parent. If it is not empty, use the provided string as the delimiter to connect with the parent key.
unpack(data, ["subject", "des"], "_")
Output:
[
{'id': 1, 'name': 'John', 'subject_subjectid': 22, 'subject_des_key': 'a'},
{'id': 1, 'name': 'John', 'subject_subjectid': 22, 'subject_des_key': 'b'},
{'id': 1, 'name': 'John', 'subject_subjectid': 23, 'subject_des_key': 'a'},
{'id': 1, 'name': 'John', 'subject_subjectid': 23, 'subject_des_key': 'e'}
]
for array
unpack(
dictionary = {"id": 1, "name": "John", "grades": [85, 92, 78]},
index = ["grades"],
delimiter = None
)
Array-type fields only allow single-level unpacking.
Output:
[
{"id": 1, "name": "John", "grade": 85},
{"id": 1, "name": "John", "grade": 92},
{"id": 1, "name": "John", "grade": 78}
]
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 dict_unpack-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e09f4f69e2adae525681645191f420dd976689758a9c7e8f7f153aa08bdca2ba |
|
MD5 | f0abe5479638ae5d910c6b572e2986c6 |
|
BLAKE2b-256 | 111bda5eed7e73d98d520ec1d1a5a22fedea1ed2274538e5c0aedce98e338790 |