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
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
File details
Details for the file ndicts-0.2.1.tar.gz
.
File metadata
- Download URL: ndicts-0.2.1.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.9.10 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 692c43c3a574430da2061dd732e29ca6f34388006491969664eb97f465e9628d |
|
MD5 | e98003307769b22481c30694d0d28c79 |
|
BLAKE2b-256 | 049038d10646d9cc330fee0bb2d7543ff118d9c6e3702c63cd248c391327a807 |
File details
Details for the file ndicts-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: ndicts-0.2.1-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.9.10 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04797657ba23e8ed9d3afe8e86da68d58f5ebc170d58238b81d7aef91274245e |
|
MD5 | 5fcfd3bdddd17ae4f3f4f8545289cd23 |
|
BLAKE2b-256 | 7876119ee7d8499b184835688188ce6f1c6ff85be9442434691976f484863389 |