Skip to main content

Class to handle nested dictionaries

Project description

Description

Nested dictionary structures emerge every time there is some sort hierarchy in the data. Trees, archives, the chapters and sections in a book, these are all examples where you will likely find nested loops of data.

Python does not have a built-in data type for nested mappings. Dictionaries can be used, however there many inconveniences and limitations. Two above all: getting items requires to open and close several square brackets (eg. d[level1][level2]...[levelN]), and iterating will only access the first layer, so nested for loops are needed to iterate through all the values.

The ndicts package aims to tackle the main issues of nested dictionaries, exposing an interface with minimum differences from dictionaries themselves. NestedDict is a MutableMapping at its core, therefore all familiar dictionary methods are available and the overall behaviour similar.

If you need to perform simple mathematical operations with your nested data, use DataDict. In addition to allowing arithmetics, DataDicts borrow some methods that you would expect from a pandas DataFrame.

Finally, this is a simple project for simple needs. Consider using pandas MultiIndex for more functionalities!

Installation

Install ndicts with pip.

pip install ndicts

Overview

Import NestedDict and DataDict.

>>> from ndicts import DataDict, NestedDict

Create a NestedDict from a dictionary.

>>> book = {
...     "Book 1": {
...         "Section 1": "The Eve of the War",
...         "Section 2": "The Falling Star"
...     },
...     "Book 2": {
...         "Section 1": "Under Foot", 
...         "Section 2": {"Paragraph 1": "After eating we crept back to the scullery"}
...     }
... }
>>> nd = NestedDict(book)

Get items more conveniently than with standard dictionaries.

>>> # NestedDict
>>> nd["Book 1", "Section 1"] 
'The Eve of the War'
>>> # dict
>>> book["Book 1"]["Section 2"]
'The Falling Star'

Iterate over a NestedDict.

>>> for key in nd:
...     print(key)
('Book 1', 'Section 1')
('Book 1', 'Section 2')
('Book 2', 'Section 1')
('Book 2', 'Section 2', 'Paragraph 1')

Documentation

https://edd313.github.io/ndicts/

Licence

ndicts is licensed under the MIT license.

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

ndicts-0.3.0.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

ndicts-0.3.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file ndicts-0.3.0.tar.gz.

File metadata

  • Download URL: ndicts-0.3.0.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.10 Windows/10

File hashes

Hashes for ndicts-0.3.0.tar.gz
Algorithm Hash digest
SHA256 1a1f31cdb770c037c9cc9bc27a8493e43bfe035a606d3630c2e3d14eabe7bfbf
MD5 4e5916e5c7f0bd09a0b1924dc0ef60fb
BLAKE2b-256 be6c2d20b98d96a1c87a32014caffb7c873ee01ccc73fc515572affdaba7cf7a

See more details on using hashes here.

File details

Details for the file ndicts-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: ndicts-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.10 Windows/10

File hashes

Hashes for ndicts-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 010b0c94180fe89e7e0d5fa89909c4bd7784c52d56908d4d776337c9358378e9
MD5 1960c334ed73876c27da041c1d166096
BLAKE2b-256 f280caf9ee0e3044be65aa6ff6a0b13ca1867e1aafc1a35df756ea068ae3af8d

See more details on using hashes here.

Supported by

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