I don't really fancy the way Python's pprint formats the output. E.g. import pprint from datetime import datetime d = { 'a': [ { '123': datetime(2021, 11, 15, 0, 0), '456': 'cillum dolore eu fugiat nulla pariatur. Excepteur sint...', '567': [ 1, 2, 'cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' ] } ], 'b': { 'x': 'yz' } } pprint.pprint(d) Will print: {'a': [{'123': datetime.datetime(2021, 11, 15, 0, 0), '456': 'cillum dolore eu fugiat nulla pariatur. Excepteur sint...', '567': [1, 2, 'cupidatat non proident, sunt in culpa qui officia deserunt ' 'mollit anim id est laborum.']}], 'b': {'x': 'yz'}} But I'd like it to be: { "a": [ { "123": datetime.datetime(2021, 11, 15, 0, 0), "456": "cillum dolore eu fugiat nulla pariatur. Excepteur sint...", "567": [ 1, 2, "cupidatat non proident, sunt in culpa qui officia deserunt " "mollit anim id est laborum.", ], } ], "b": {"x": "yz"}, } I.e. in the style of Black Is there a parameter of pprint or some 3rd party library to do this? I guess I could use Black for some outputs but I wonder if there is an out-of-the-box solution Edit: A good suggestion was to use print(json.dumps(d, indent=4)). This does the job if the whole thing is JSON-serializable but unfortunately does not work otherwise. Continue reading...