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
Close
Hashes for Dict_Path_Immutable-0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0792332021784ebc5876ea11164e343ab03d51a75f7c94b7e4207f597974d680 |
|
MD5 | 784c3ef2f6de98b5da193c7f6b371ffe |
|
BLAKE2b-256 | 268be5422dc0a7443a40bdba452fabe3aeb807b33a814134d8a96af84a9d95c9 |