koji/メガネ男の日誌

日々の学び、活動状況を記録します。仕事のことは少なめ。

pprint() でリストや辞書を整形して出力するテクニック

f:id:kj_man666:20200419184019j:plain

小ネタですが、pprint() でリストや辞書を整形して出力することができます。

まずは表示がややこしい辞書型のデータを作成します。

# 辞書型のデータの作成
dic = {
            'C134':{"price":30,"sales":"1000","profit":200 ,"alist":[110,20,30 ,50]}, 
            'C623':{"price":80,"sales":"100" ,"profit":6   ,"alist":[100,10,30 ,50]},
            'C430':{"price":70,"sales":"5000","profit":1000,"alist":[160,11,120,6]},
            'C115':{"price":10,"sales":"2400","profit":40  ,"alist":[80 , 1,10 ,6]}
        }

まずは、データ名をそのまま打ち込んで出力したパターン。

dic

f:id:kj_man666:20200419184923p:plain

これはこれでキレイに表示されていますが、この後にコードを入力すると、データの中身は表示されません。

また、インデントが若干見づらいところがあります。

次に print() を使った場合。

print(dic)

f:id:kj_man666:20200419184909p:plain

ぎっしり表示されてしまうため、かなり見づらいですね。

最後に pprint() を使う場合。

import pprint() する必要があります。

import pprint
pprint.pprint(dic)

f:id:kj_man666:20200419184854p:plain

インデントもキレイにされ、かなり見やすく表示されます。

難点を言うと、昇順で並び変えられてしまっているところですね・・・。

パラメーターが増えてちょっとだけ手間ですが、バージョン 3.8 以降は、sort_dicts = False を追加することでソートせずに出力することが可能です。

pprint.pprint(dic, sort_dicts = False)

f:id:kj_man666:20200419220144p:plain

以上になります、最後までお読みいただきありがとうございました。

(参考) pprint() の詳細 note.nkmk.me

複雑なdict型を拝借したサイト qiita.com

pprint() のドキュメント docs.python.org

ブログ内のコード github.com 20200419_pprint.ipynb