How to pretty print nested dictionaries?
My first thought was that the JSON serializer is probably pretty good at nested dictionaries, so I'd cheat and use that:
>>> import json>>> print(json.dumps({'a':2, 'b':{'x':3, 'y':{'t1': 4, 't2':5}}},... sort_keys=True, indent=4)){ "a": 2, "b": { "x": 3, "y": { "t1": 4, "t2": 5 } }}
I'm not sure how exactly you want the formatting to look like, but you could start with a function like this:
def pretty(d, indent=0): for key, value in d.items(): print('\t' * indent + str(key)) if isinstance(value, dict): pretty(value, indent+1) else: print('\t' * (indent+1) + str(value))
You could try YAML via PyYAML. Its output can be fine-tuned. I'd suggest starting with the following:
print yaml.dump(data, allow_unicode=True, default_flow_style=False)
The result is very readable; it can be also parsed back to Python if needed.
Edit:
Example:
>>> import yaml>>> data = {'a':2, 'b':{'x':3, 'y':{'t1': 4, 't2':5}}}>>> print yaml.dump(data, default_flow_style=False)a: 2b: x: 3 y: t1: 4 t2: 5