辞書の辞書(別名テーブル)
今日は、『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['アーサー']で取得できる辞書のキーを使います。
サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪