dicter is a Python package with advanced dictionary functions.
Project description
-
dicteris Python package with advanced dictionary functions:- Traverse through nested dicts to retrieve key-path.
- Set value in dictionary using key-path
- Get value in dictionary using key-path.
- Flattens dicts.
- Compare two dicts.
- Store and load in json.
Star this repo if you like it! ⭐️
Documentation
Installation
- Install dicter from PyPI (recommended). dicter is compatible with Python 3.6+ and runs on Linux, MacOS X and Windows.
- A new environment can be created as following:
pip install -U dicter
- Alternatively, you can install from the GitHub source:
# Directly install from github source
pip install git+https://github.com/erdogant/dicter
Examples
Import dicter package
import dicter as dt
Traverse all paths in dictionary.
import dicter as dt
# Example dict:
d = {'level_a': 1, 'level_b': {'a': 'hello world'}, 'level_c': 3, 'level_d': {'a': 1, 'b': 2, 'c': {'e': 10}}, 'level_e': 2}
# Walk through dict to get all paths
paths = dt.traverse(d)
print(paths)
# [[['level_a'], 1],
# [['level_c'], 3],
# [['level_e'], 2],
# [['level_b', 'a'], 'hello world'],
# [['level_d', 'a'], 1],
# [['level_d', 'b'], 2],
# [['level_d', 'c', 'e'], 10]]
Get value from dictionary using nested keys.
# Import dicter
import dicter as dt
# Example dictionary
d = {'level_a': 1, 'level_b': {'a': 'hello world'}, 'level_c': 3, 'level_d': {'a': 1, 'b': 2, 'c': {'e': 10}}, 'level_e': 2}
# Get the value for the nested path for:
value = dt.get_nested(d, key_path=["level_b", "a"])
print(value)
# 'hello world'
Set value from dictionary using nested keys.
# Import dicter
import dicter as dt
# Example: New path and value in dictionary.
d = {}
key_path = ['person', 'address', 'city']
dt.set_nested(d, key_path, 'New York')
# Print updated dictionary
print(d)
# {'person': {'address': {'city': 'New York'}}}
Set value from dictionary using nested keys.
# Import dicter
import dicter as dt
# Example dict
d = {'level_a': 1, 'level_b': {'a': 'hello world'}, 'level_c': 3, 'level_d': {'a': 1, 'b': 2, 'c': {'e': 10}}, 'level_e': 2}
# Flatten dictionary
dflat = dt.flatten(d)
print(d_flat)
# [['level_a', 1],
# ['a', 'hello world'],
# ['level_c', 3],
# ['a', 1],
# ['b', 2],
# ['e', 10],
# ['level_e', 2]]
Depth of dictionary.
# Import dicter
import dicter as dt
d = {'level_a': 1, 'level_b': {'a': 'hello world'}, 'level_c': 3, 'level_d': {'a': 1, 'b': 2, 'c': {'e': 10}}, 'level_e': 2}
n = dt.depth(d)
Compare dictionary.
# Import dicter
import dicter as dt
Example: Add
d1 = {'level_a': 1, 'level_b': {'a': 'hello world'}, 'level_c': 'new in d2'}
d2 = {'level_a': 1, 'level_b': {'a': 'hello world'}}
out = dt.compare(d1, d2)
print(out)
Example: Remove
d1 = {'level_a': 1, 'level_b': {'a': 'hello world'}}
d2 = {'level_a': 1, 'level_b': {'a': 'hello world'}, 'level_c': 'new in d2'}
out = dt.compare(d1, d2)
print(out)
Example: Modified
d1 = {'level_a': 1, 'level_b': {'a': 'hello world'}}
d2 = {'level_a': 1, 'level_b': {'a': 'modified'}}
out = dt.compare(d1, d2)
print(out['modified'])
Save and load dictionary.
# Import dicter
import dicter as dt
d = {'level_a': None, 'level_b': {'a': 'hello world'}, 'level_c': True, 'level_d': 2.3, 'level_e': [[1,2,3], [1,2]]}
filepath='c:/temp/test/dicter_save.json'
# First save
dt.save(d, filepath=filepath, overwrite=True)
# Load
d = dt.load(filepath)
Citation
Please cite in your publications if this is useful for your research (see citation).
☕ Support
If you find this project useful, consider supporting me:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dicter-0.1.7.tar.gz
(12.1 kB
view details)
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
dicter-0.1.7-py3-none-any.whl
(11.2 kB
view details)
File details
Details for the file dicter-0.1.7.tar.gz.
File metadata
- Download URL: dicter-0.1.7.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cafd881d73beebaac236492165111537e9e613f62a566adbb3c854ad351528d
|
|
| MD5 |
8cb5048a2c2d51aa7a5ce1dbf4bcead2
|
|
| BLAKE2b-256 |
f37e8d7d06a8638163825b150b56f022624d12d978af722126114e9daafadfab
|
File details
Details for the file dicter-0.1.7-py3-none-any.whl.
File metadata
- Download URL: dicter-0.1.7-py3-none-any.whl
- Upload date:
- Size: 11.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5edd0adf79cd4a75aa220f1b23d7d4aec3e59bdec95a75f13d1d9f0d05351705
|
|
| MD5 |
37ba15e20f0dff9d5f7f9adba5101f39
|
|
| BLAKE2b-256 |
342ba2d7038bdb8b0771b725ebdfd81b34b928e53a0f7346cfa3b676736eaae9
|