多行的python pprint词典

mul*_*sen 61 python dictionary python-2.7 pprint

我正试图获得一本字典的印刷品,但我没有运气:

>>> import pprint
>>> a = {'first': 123, 'second': 456, 'third': {1:1, 2:2}}
>>> pprint.pprint(a)
{'first': 123, 'second': 456, 'third': {1: 1, 2: 2}}
Run Code Online (Sandbox Code Playgroud)

我希望输出在多行上,如下所示:

{'first': 123,
 'second': 456,
 'third': {1: 1,
           2: 2}
}
Run Code Online (Sandbox Code Playgroud)

可以pprint这样吗?如果没有,那么哪个模块呢?我正在使用Python 2.7.3.

War*_*ser 81

使用width=1width=-1:

In [33]: pprint.pprint(a, width=1)
{'first': 123,
 'second': 456,
 'third': {1: 1,
           2: 2}}
Run Code Online (Sandbox Code Playgroud)

  • 负宽度不会做任何特别的事情。随着代码的进行,它会检查部分输出字符串的长度是否为“<宽度”。任何负宽度仅意味着答案将始终为“否”。宽度为 0 几乎总是(或者可能总是 - 我不太关心考虑不正常的情况;-))做同样的事情。 (2认同)

Rya*_*hou 31

您可以将dict转换为json json.dumps(d, indent=4)

print(json.dumps(item, indent=4))
{
    "second": 456,
    "third": {
        "1": 1,
        "2": 2
    },
    "first": 123
}
Run Code Online (Sandbox Code Playgroud)

  • @ErikAronesty您应该注意`null'和布尔值(true / false)。它们是JSON值,而不是python对象。 (3认同)
  • 对于简单情况来说是好的解决方案,但是将 python 值转换为 json 值(正如 @RyanChou 指出的那样),并且它可能不理想或不可能(就像“datetime”):“json.dumps({'d': datetime.now( )})` 将崩溃,并显示“日期时间类型的对象不可 JSON 序列化”。 (3认同)

小智 21

如果您尝试打印环境变量,请使用:

pprint.pprint(dict(os.environ), width=1)
Run Code Online (Sandbox Code Playgroud)