web-dev-qa-db-ja.com

複数行の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}}

出力を次のような複数行にしたかったのです。

{'first': 123,
 'second': 456,
 'third': {1: 1,
           2: 2}
}

pprint できますか?そうでない場合、どのモジュールがそれを行いますか?私は Python 2.7. を使用しています。

56
mulllhausen

つかいます width=1 または width=-1

In [33]: pprint.pprint(a, width=1)
{'first': 123,
 'second': 456,
 'third': {1: 1,
           2: 2}}
73

json.dumps(d, indent=4)を使用して辞書をJSONに変換できます

print(json.dumps(item, indent=4))
{
    "second": 456,
    "third": {
        "1": 1,
        "2": 2
    },
    "first": 123
}
22
Ryan Chou

環境変数をきれいに出力しようとしている場合は、次を使用します。

pprint.pprint(dict(os.environ), width=1)
20
UngodlySpoon

Ryan Chouの既に非常に役立つ答えに加えて、2つのことを追加します。

  • _sort_keys_引数を渡すと、辞書の視覚的な見栄えがよくなります(特に)。 3.6より前のバージョンで作業している場合Python(辞書が順序付けられていない)
_print(json.dumps(item, indent=4, sort_keys=True))
"""
{
    "first": 123,
    "second": 456,
    "third": {
        "1": 1,
        "2": 2
    }
}
"""
_
  • dumps()は、辞書キーがプリミティブ(文字列、intなど)の場合にのみ機能します
1
Zach Valenta