A dictionary that can be flattened and re-inflated. Particularly useful if you're interacting with yaml, for example.
with pip:
pip install deflatable-dict
deflatable-dict
does not have any dependencies beyond standard python libraries.
from deflatabledict import DeflatableDict
dd = DeflatableDict({
"a": {
"1": True,
"2": False,
},
"b": 20,
})
dd["a.1"] # True
dd["a.2"] # False
dd["b"] # 20
dd["a"] # { "1": True, "2": False }
A DeflatableDict can be deflated with .deflate()
. This returns a standard dictionary object with flattened keys constructed by concatenating the nested keys with the DeflatableDict's delimiter. A DeflatableDict uses it's deflated form for its string representation.
A DeflatableDict can have it's delimiter specified by passing the desired delimiter as the sep
parameter to the DeflatableDict constructor. By default the delimiter if .
.
A DeflatableDict will automatically inflate any values that are inserted into it. For example:
from deflatabledict import DeflatableDict
dd = DeflatableDict()
dd["a.1"] = True
dd["a.2"] = False
dd["a"] # { "1": True, "2": False }
This project uses .devcontainer
to describe the environment to use for development. You may use the environment described in this directory (it integrates automatically with vscode's 'remote containers' extension), or you may create your own environment with the same dependencies.
Install development dependencies with:
pip install .[tests]
Run tests with:
pytest