Python
memo

pprintで辞書・リストを見やすくする

見にくくて醜い

例えば、poloniexAPIから取得したTicker。

ticker
{'BTC_BCN': {'id': 7, 'last': '0.00000032', 'lowestAsk': '0.00000033', 'highestBid': '0.00000032', 
'percentChange': '-0.23809523', 'baseVolume': '617.33518352', 'quoteVolume': '1642376269.91427302', 
'isFrozen': '0', 'high24hr': '0.00000045', 'low24hr': '0.00000030'}, 'BTC_BELA': {'id': 8, 'last': 
'0.00001580', 'lowestAsk': '0.00001583', 'highestBid': '0.00001580', 'percentChange': '-0.13849509',
'baseVolume': '31.33147317', 'quoteVolume': '1746882.31926303', 'isFrozen': '0', 'high24hr': 
'0.00001968', 'low24hr': '0.00001580'}, ... }

人間が読む文章ではない。USDT_BTCを探すために私の人差し指は進化しそうである。(検索すれば良いのであるが、それ以前の気持ちの問題である)

よく見る階層構造になっているのを改行して表示される指が痛くならないやつ、したい。

標準ライブラリのpprintを使う。公式ドキュメントは以下。
8.11. pprint — データ出力の整然化¶(原文)

とりあえず公式ドキュメント通りにやって見ると、

imput
import pprint

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(ticker)
output
>>> {'BTC_AMP': {'baseVolume': '87.83040605',
             'high24hr': '0.00003700',
             'highestBid': '0.00002911',
             'id': 160,
             'isFrozen': '0',
             'last': '0.00002911',
             'low24hr': '0.00002800',
             'lowestAsk': '0.00002920',
             'percentChange': '-0.07587301',
             'quoteVolume': '2688975.68537347'},
     'BTC_ARDR': {'baseVolume': '429.92214953',
              'high24hr': '0.00008229',
              'highestBid': '0.00007502',
              'id': 177,
              'isFrozen': '0',
              'last': '0.00007502',
              'low24hr': '0.00006625',
              'lowestAsk': '0.00007566',
              'percentChange': '-0.03820512',
              'quoteVolume': '5757489.72112444'},
     ## ...(以下長いので略)
    }

素晴らしい。なんと頼んでもないのに順序も整理してくれた。(正直混乱するのでやめてほしい)まあ、辞書だし良いか。
想像以上に縦に長く、やはり私の中指は進化を遂げそうだが、それでも欲求は満たされた。
なお、ppなんぞは謎すぎ無駄すぎ美しくない(と思っている)ので、

imput
import pprint

pprint.pprint(ticker)

で良い。個人的にはpprint(hoge)だけにしてほしいしたい。 →出来た
5単語あるうちpprintが3/5を占めているが、仕方ない。と、思ったが、

imput
import pprint as pp

pp.pprint(ticker)

でええやん。よし、これは良い。満足。

まだ戦いは終わらない

神が降臨し、ご神託を授かった。

imput
from pprint import pprint

pprint(ticker)

この洗練されていく感じ、快感。

メカニズムがよく分からない

どうやら、配列の場合は、要素の長さで改行を判断しているみたいだ。

test1
a = [0, 1, [20, 21, 22], [30, 31]]
pp.pprint(a)

>>> [0, 1, [20, 21, 22], [30, 31]]

引数widthを追加して、しきいとなる幅を決めてあげると、

test1
a = [0, 1, [20, 21, 22], [30, 31]]
pp.pprint(a, width=20)

>>> [0,
     1,
     [20, 21, 22],
     [30, 31]]

となるが、、、なんか思ってたんとちがーーーう。
まあ、いいや、、、

感想

  • Hydrogenとの相性がいい
  • サクッと変数確認したいときに便利
  • MagicMouseユーザーであるが、横スクロールは人差し指で、縦スクロールは中指で行なっていることが判明した。pprintに頼らない方が、案外中指と人差し指の磨り減り具合が揃っていいのかもしれない。