Skip to main content

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']
#   }
# }

Release files for Dict-Path-Immutable 0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Dict-Path-Immutable 0.3
File Size Uploaded
Dict_Path_Immutable-0.3.tar.gz 1.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Dict-Path-Immutable 0.3
File Interpreter ABI Platform
Dict_Path_Immutable-0.3-py3-none-any.whl Python 3 none any Details

Total release size: 4.5 kB

Release files / Dict_Path_Immutable-0.3.tar.gz

Download URL Dict_Path_Immutable-0.3.tar.gz
Size 1.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8d029ffb2c28ba733ea74cccb1886abdf498b6b71277923a438c2b300faa0bb8
BLAKE2b-256 checksum
How to use checksums
80358e2ce9f3a22b5d0698f9d889fa6ecf60b66be3d1fb1deb15ae25e7173791
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / Dict_Path_Immutable-0.3-py3-none-any.whl

Download URL Dict_Path_Immutable-0.3-py3-none-any.whl
Size 2.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0792332021784ebc5876ea11164e343ab03d51a75f7c94b7e4207f597974d680
BLAKE2b-256 checksum
How to use checksums
268be5422dc0a7443a40bdba452fabe3aeb807b33a814134d8a96af84a9d95c9
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.3 This release

2 release files

0.2

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page