Modify 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
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
Close
Hashes for Dict_Path_Immutable-0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e39048705a5d917be85c2f8a2776f82172c106ab089ab7f059c0bd6ded5ee6ae |
|
MD5 | 339c5daae374d7612986215a0b995484 |
|
BLAKE2b-256 | 6093203f491f5e63a69f0e61af522f300d5033b424a1f4e5d7035f6669a9ca35 |