Pythonのpprintモジュールで辞書やリストを綺麗に表示する方法

Pythonでリストや辞書、特にネストされた(入れ子構造の)複雑なデータ構造を扱う際、print()関数でその内容を確認しようとすると、すべてのデータが一行で表示されてしまい、非常に読みにくいことがあります。

このようなデータを、人間が読みやすいように整形して表示してくれるのが、Pythonの標準ライブラリである**pprint**(pretty-print)モジュールです。


目次

通常のprint関数の限界

まずは、複雑なデータ構造を通常のprint()関数で表示した場合の問題点を見てみましょう。ここでは、ユーザー情報のリスト(リストの中に辞書が含まれる形)を例にします。

# ユーザーデータのリスト
user_data = [
    {'id': 101, 'name': 'Alice', 'roles': ['admin', 'editor']},
    {'id': 102, 'name': 'Bob', 'roles': ['viewer']},
    {'id': 103, 'name': 'Charlie', 'roles': ['editor', 'contributor']}
]

# print()関数で表示する
print(user_data)

これを実行すると、ターミナルには以下のように表示されます。

[{'id': 101, 'name': 'Alice', 'roles': ['admin', 'editor']}, {'id': 102, 'name': 'Bob', 'roles': ['viewer']}, {'id': 103, 'name': 'Charlie', 'roles': ['editor', 'contributor']}]

データが一行に圧縮されてしまい、構造を把握するのが困難です。


pprintモジュールで見やすく表示する

pprintモジュールを使うと、この問題が解決します。pprintモジュールをインポートし、pprint.pprint()関数を使って同じデータを表示してみましょう。

import pprint

user_data = [
    {'id': 101, 'name': 'Alice', 'roles': ['admin', 'editor']},
    {'id': 102, 'name': 'Bob', 'roles': ['viewer']},
    {'id': 103, 'name': 'Charlie', 'roles': ['editor', 'contributor']}
]

# pprint.pprint()関数で表示する
pprint.pprint(user_data)

実行結果は以下のようになります。

[{'id': 101, 'name': 'Alice', 'roles': ['admin', 'editor']},
 {'id': 102, 'name': 'Bob', 'roles': ['viewer']},
 {'id': 103, 'name': 'Charlie', 'roles': ['editor', 'contributor']}]

pprint.pprint()は、データ構造に応じて自動的に改行とインデントを加え、辞書のキーをアルファベット順にソートしてくれるため、出力が劇的に読みやすくなります。これにより、デバッグ作業やデータの内容確認が非常に効率的になります。


pprint.pformat():整形後の文字列を取得する

pprint.pprint()が結果を直接コンソールに出力するのに対し、pprint.pformat()関数は、整形された文字列を戻り値として返します

これにより、整形されたデータをログファイルに書き出したり、変数に保存して後から利用したりすることができます。

import pprint

user_data = [
    {'id': 101, 'name': 'Alice', 'roles': ['admin', 'editor']},
    {'id': 102, 'name': 'Bob', 'roles': ['viewer']}
]

# 整形された文字列を変数に保存
formatted_string = pprint.pformat(user_data)

# 変数に保存した文字列を表示
print(formatted_string)

まとめ

  • print()関数は、複雑なデータ構造を一行で表示するため読みにくいことがあります。
  • pprint.pprint()は、辞書やリストを人間が読みやすいように整形して出力します。
  • pprint.pformat()は、整形された結果を文字列として返します

pprintは、特にAPIから受け取ったJSONデータや、複雑な設定ファイルの内容を確認する際など、開発の様々な場面で役立つ強力なツールです。デバッグの際にはぜひ活用してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次