Modify or get deep dictionary properties without modifying the original dictionary (immutability)
Project description
Dict_Path_Immutable
Tiny Python library to modify deep dictionary properties without modifying the original dictionary (immutability).
Install
pip install Dict_Path_Immutable
Quick usage
The following, sets a property without modifying the original dictionary. It will minimize the number of clones down the line. The resulting dictionary is just a plain Python dictionary, so be warned that it will not be protected against property mutations
my_dict = {
a: {
b: 'c',
c: ['d', 'f']
}
}
new_dict = Dict_Path_Immutable.set(my_dict, 'a.b', 'f')
# {
# a: {
# b: 'f',
# c: ['d', 'f']
# }
# }
API
# Premises
my_dict = {
a: {
b: 'c',
c: ['d', 'f']
}
}
from Dict_Path_Immutable import Dict_Path_Immutable
get (initialDict, path)
Gets a property.
nested_list = Dict_Path_Immutable.get(my_dict, 'a.c')
# [
# 'c',
# 'f'
# ]
nested_list_item = Dict_Path_Immutable.get(my_dict, 'a.c.1')
# 'f'
set (initialDict, path, value)
Changes a dictionary property.
- Path can be either a string or an array.
new_dict1 = Dict_Path_Immutable.set(my_dict, 'a.b', 'f')
new_dict2 = Dict_Path_Immutable.set(my_dict, ['a', 'b'], 'f')
# {
# a: {
# b: 'f',
# c: ['d', 'f']
# }
# }
# Note that if the path is specified as a string, numbers are automatically interpreted as array indexes.
new_dict = Dict_Path_Immutable.set(my_dict, 'a.c.1', 'fooo')
# {
# a: {
# b: 'f',
# c: ['d', 'fooo']
# }
# }
delete (initialDict, path)
Deletes a property.
new_dict = Dict_Path_Immutable.delete(my_dict, 'a.c')
# {
# a: {
# b: 'f'
# }
# }
Can also delete a deep array item using splice
new_dict = Dict_Path_Immutable.delete(my_dict, 'a.c.0')
# {
# a: {
# b: 'f',
# c: ['f']
# }
# }
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 Dict_Path_Immutable-0.3.tar.gz
.
File metadata
- Download URL: Dict_Path_Immutable-0.3.tar.gz
- Upload date:
- Size: 1.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
8d029ffb2c28ba733ea74cccb1886abdf498b6b71277923a438c2b300faa0bb8
|
|
MD5 |
6c8970ce419d8319b1112df1b0803145
|
|
BLAKE2b-256 |
80358e2ce9f3a22b5d0698f9d889fa6ecf60b66be3d1fb1deb15ae25e7173791
|
File details
Details for the file Dict_Path_Immutable-0.3-py3-none-any.whl
.
File metadata
- Download URL: Dict_Path_Immutable-0.3-py3-none-any.whl
- Upload date:
- Size: 2.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
0792332021784ebc5876ea11164e343ab03d51a75f7c94b7e4207f597974d680
|
|
MD5 |
784c3ef2f6de98b5da193c7f6b371ffe
|
|
BLAKE2b-256 |
268be5422dc0a7443a40bdba452fabe3aeb807b33a814134d8a96af84a9d95c9
|