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

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

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

  • Download URL: dixi-0.0.1-py2-none-any.whl
  • Upload date:
  • Size: 4.3 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No

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 Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page