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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Dict_Path_Immutable-0.3.tar.gz (1.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Dict_Path_Immutable-0.3-py3-none-any.whl (2.7 kB view details)

Uploaded Python 3

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

Hashes for Dict_Path_Immutable-0.3.tar.gz
Algorithm Hash digest
SHA256 8d029ffb2c28ba733ea74cccb1886abdf498b6b71277923a438c2b300faa0bb8
MD5 6c8970ce419d8319b1112df1b0803145
BLAKE2b-256 80358e2ce9f3a22b5d0698f9d889fa6ecf60b66be3d1fb1deb15ae25e7173791

See more details on using hashes here.

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

Hashes for Dict_Path_Immutable-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0792332021784ebc5876ea11164e343ab03d51a75f7c94b7e4207f597974d680
MD5 784c3ef2f6de98b5da193c7f6b371ffe
BLAKE2b-256 268be5422dc0a7443a40bdba452fabe3aeb807b33a814134d8a96af84a9d95c9

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3 This release

2 files

0.2

2 files

0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page