Skip to main content

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


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

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.

Supported by

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