Creating JSON-like structures in Python (or any other programming language), can be a cumbersome experience. Consider this snippet from the elasticsearch-py library, taken from the example/query.py file:

I would argue that 33 lines for creating the facets above is too much.

To save you from the dreaded hassle of writing JSON in your programs, I created addict, a Python dictionary that let’s you create nested dictionaries using get- and set attribute syntax.

Here’s how the same code looks with addict:

addict is open-source and MIT-licensed. It is actively developed and anyone interested is encouraged to submit issues and pull requests, as both are more than welcome.