Skip to main content

Wrapper around Python dicts that makes it easy to deal with nested tree structures.

Project description

# Dixi - Deep Dictionaries for Python

## Installation
```bash
pip install dixi
```

## Examples
```python
from dixi import Dixi

data = Dixi({
'Chris': {
'age': 25,
'address': {
'city': 'Amsterdam',
'country': 'Netherlands',
},
},
'Anna': {
'age': 19,
'address': {
'city': 'Zürich',
'country': 'Switzerland',
},
},
'John': {
'age': 44,
'address': {
'city': 'London',
'country': 'United Kingdom',
},
},
})
```

### Deep indexing
```python
data['John', 'age']
# >> 44
```

### Partial indexing
```python
data['Chris', 'address']
# >> {'city': 'Amsterdam', 'country': 'Netherlands'}
```

### NumpPy style slicing
```python
data[:, 'address', 'country']
# >> Dixi({'Chris': 'Netherlands', 'Anna': 'Switzerland', 'John': 'United Kingdom'})
data[['Chris', 'Anna'], 'age']
# >> {'Chris': 25, 'Anna': 19}
```

### Setting
```python
data['Derek', 'hobbies'] = ['Sewing', 'Archery']
```

### Iteration
```python
for key in data: # or key in data.leafkeys()
print(key)
# >> ('Chris', 'age')
# >> ('Anna', 'age')
# >> ('Anna', 'address', 'city')
# >> ('Anna', 'address', 'country')
# >> ('John', 'age')
# >> ('John', 'address', 'city')
# >> ('John', 'address', 'country')
# >> ('Derek', 'hobbies')
```
```python
for key in data.keys():
print(key)
# >> Chris
# >> Anna
# >> John
# >> Derek
```
```python
for key, value in data.items():
print(key, value)
# >> Chris {'age': 25}
# >> Anna {'age': 19, 'address': {'city': 'Zürich', 'country': 'Switzerland'}}
# >> John {'age': 44, 'address': {'city': 'London', 'country': 'United Kingdom'}}
# >> Derek {'hobbies': ['Sewing', 'Archery']}
```
```python
data = Dixi({
0: { 0: 'a', 1: 'b' },
1: { 0: 'c', 1: 'd' },
})
for keys, value in data.iterleaves():
print(keys, value)
# >> (0, 0) a
# >> (0, 1) b
# >> (1, 0) c
# >> (1, 1) d
```

### Deletion
```python
del data['Chris', 'address']
```

## Todo
* Allow indexing for arrays


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

dixi-0.0.1.tar.gz (2.6 kB view details)

Uploaded Source

Built Distribution

dixi-0.0.1-py2-none-any.whl (4.3 kB view details)

Uploaded Python 2

File details

Details for the file dixi-0.0.1.tar.gz.

File metadata

  • Download URL: dixi-0.0.1.tar.gz
  • Upload date:
  • Size: 2.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for dixi-0.0.1.tar.gz
Algorithm Hash digest
SHA256 881743375ef2fe1edca6fb235f956a3502ea58a035370c874be1846ea5c12e8e
MD5 541cd946c2402086d1dd1f4edc8c8e69
BLAKE2b-256 73f5b35d3e999a3409f9be6b7d17ba57edba4ef645f0140c463414411a4f668b

See more details on using hashes here.

File details

Details for the file dixi-0.0.1-py2-none-any.whl.

File metadata

File hashes

Hashes for dixi-0.0.1-py2-none-any.whl
Algorithm Hash digest
SHA256 5850e25109418a32a1a9550a8111b7d32ce0e0261708048ab1ff72da199ecf57
MD5 0f64ab77749eb8701521cbf43041ca6b
BLAKE2b-256 07c2907341c6a8796b2162026c0f663f93ab084d1c421f0e513b5e348e4e432a

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