Flatten-dict

0.4.2 · active · verified Thu Apr 09

Flatten-dict is a flexible utility library for flattening and unflattening dict-like objects in Python. It supports custom key formatters (splitters/reducers) and handles nested structures, lists, and tuples. The current version is 0.4.2, and it maintains an active release cadence with improvements and bug fixes.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates basic flattening and unflattening of a nested dictionary using the default underscore delimiter, and then shows how to use a custom dot delimiter for flattening.

from flatten_dict import flatten, unflatten

data = {
    'user': {
        'name': 'Alice',
        'address': {'city': 'Wonderland', 'zip': '12345'}
    },
    'products': [
        {'id': 1, 'item': 'Tea Cup'},
        {'id': 2, 'item': 'Rabbit Hole'}
    ]
}

# Flatten the dictionary with default underscore delimiter
flat_data = flatten(data)
print('Flattened (default underscore):')
print(flat_data)
# Expected: {'user_name': 'Alice', 'user_address_city': 'Wonderland', 'user_address_zip': '12345', 'products_0_id': 1, 'products_0_item': 'Tea Cup', 'products_1_id': 2, 'products_1_item': 'Rabbit Hole'}

# Unflatten it back
unflat_data = unflatten(flat_data)
print('\nUnflattened back:')
print(unflat_data)
# Expected: {'user': {'name': 'Alice', 'address': {'city': 'Wonderland', 'zip': '12345'}}, 'products': [{'id': 1, 'item': 'Tea Cup'}, {'id': 2, 'item': 'Rabbit Hole'}]}

# Flatten with a custom dot delimiter
from flatten_dict.splitters import dot_splitter
flat_data_dot = flatten(data, splitter=dot_splitter)
print('\nFlattened (dot splitter):')
print(flat_data_dot)
# Expected: {'user.name': 'Alice', 'user.address.city': 'Wonderland', 'user.address.zip': '12345', 'products.0.id': 1, 'products.0.item': 'Tea Cup', 'products.1.id': 2, 'products.1.item': 'Rabbit Hole'}

view raw JSON →