見出し画像

辞書の辞書(別名テーブル)

今日は、『Head First Python』の3章 "構造化データ" で学んだことをアウトプットします。

最初に空の辞書peopleを作成し、そこに辞書データを4つ代入していきます。

>>> people = {}
>>> people['フォード'] = {'名前': 'フォード・プリーフェクト',
			  '性別': '男性',
			  '職業': '研究者',
			  '母星': 'ベテルギウス第7星'}
>>> people['アーサー'] = {'名前': 'アーサー・デント',
			  '性別': '男性',
			  '職業': 'サンドイッチ職人',
			  '母星': '地球'}
>>> people['トリリアン'] = {'名前': 'トリシア・マクミラン',
			   '性別': '女性',
			   '母星': '地球'}
>>> people['ロボット'] = {'名前': 'マーヴィン',
			  '性別': '不明',
			  '職人': '偏執症アンドロイド',
			  '母星': '不明'}

>>>プロンプトでpeople辞書を表示してみます。

>>> people
{'フォード': {'名前': 'フォード・プリーフェクト', '性別': '男性', '職業': '研究者', '母星': 'ベテルギウス第7星'}, 'アーサー': {'名前': 'アーサー・デント', '性別': '男性', '職業': 'サンドイッチ職人', '母星': '地球'}, 'トリリアン': {'名前': 'トリシア・マクミラン', '性別': '女性', '母星': '地球'}, 'ロボット': {'名前': 'マーヴィン', '性別': '不明', '職人': '偏執症アンドロイド', '母星': '不明'}}

複合データ構造を整形して出力する

標準ライブラリには、任意のデータ構造を読みやすい形式で表示できるpprintというモジュールがあります。pprintという名前は「pretty print」の略です。
>>> import pprint
>>> 
>>> pprint.pprint(people)
{'アーサー': {'名前': 'アーサー・デント', '性別': '男性', '母星': '地球', '職業': 'サンドイッチ職人'},
'トリリアン': {'名前': 'トリシア・マクミラン', '性別': '女性', '母星': '地球'},
'フォード': {'名前': 'フォード・プリーフェクト', '性別': '男性', '母星': 'ベテルギウス第7星', '職業': '研究者'},
'ロボット': {'名前': 'マーヴィン', '性別': '不明', '母星': '不明', '職人': '偏執症アンドロイド'}}
>>> 

pprintモジュールをインポートしてから、pprint関数を呼び出して出力します。

複合データ構造のデータにアクセスする

アーサーの職業を調べるには、まず名前カラムでアーサーの名前を探し、その行のデータの職業カラムで調べて「サンドイッチ職人」であることがわかります。

まず、people辞書のアーサーのデータを探します。[]にアーサーのキーを指定します。
>>> people['アーサー']
{'名前': 'アーサー・デント', '性別': '男性', '職業': 'サンドイッチ職人', '母星': '地球'}
アーサーの行のデータがあったら、「職業」キーに対応する値を探します。そのために、2つ目の[]を使って、アーサーの辞書のインデックスを指定し、該当データにアクセスします。
>>> people['アーサー']['職業']
'サンドイッチ職人'
2つの[]を使うと、対象となる行とカラムを指定してテーブルから任意のデータ値を取得できます。行には辞書peopleのキーを指定します。カラムにはpeople['アーサー']で取得できる辞書のキーを使います。

サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪