概要
「Head First Python 第2版」を進めていった中で考えたことの記録です。
- 作者:Paul Barry
- 発売日: 2018/03/24
- メディア: 単行本(ソフトカバー)
組み込みデータ構造を組み合わせる
- Pythonでは、組み込みデータ構造を任意に組み合わせたデータ構造を作ることができる
- 組み込みデータ構造を組み合わせる例
- 辞書の辞書
- リストのリスト
- リストの集合
- 辞書のタプル
- 改めて組み込みデータ構造の特徴
people = {}
people['フォード'] = {'名前': 'フォード・プリーフェクト',
'性別': '男性',
'職業': '研究者',
'母星': 'ベテルギウス第7星'}
people['アーサー'] = {'名前': 'アーサー・デント',
'性別': '男性',
'職業': 'サンドイッチ職人',
'母星': '地球'}
people['トリリアン'] = {'名前': 'トリシア・マクミラン',
'性別': '女性',
'職業': '数学者',
'母星': '地球'}
people['ロボット'] = {'名前': 'マーヴィン',
'性別': '不明',
'職業': '偏執症アンドロイド',
'母星': '不明'}
↑以下、上述コードの説明
peopleという辞書を定義し、辞書peopleの各行に辞書を代入しているpeopleという辞書には、代入が済んだ時点で4つのキーが存在する'フォード''アーサー''トリリアン''ロボット'
print(people)
# => {'フォード': {'名前': 'フォード・プリーフェクト', '性別': '男性', '職業': '研究者', '母星': 'ベテルギウス第7星'}, 'アーサー': {'名前': 'アーサー・デント', '性別': '男性', '職業': 'サンドイッチ職人', '母星': '地球'}, 'トリリアン': {'名前': 'トリシア・マクミラン', '性別': '女性', '職業': '数学者', '母星': '地球'}, 'ロボット': {'名前': 'マーヴィン', '性別': '不明', '職業': '偏執症アンドロイド', '母星': '不明'}}
↑以下、上述コードの説明
- 先程4つの行を追加した
- データ構造は、
{{key: value, ...},{key: value, ...},{key: value, ...},{key: value, ...}}となっている{と}が5つずつ存在する
- 全て1行(右端で折り返し)で表示されており、人間には見づらい
import pprint
pprint.pprint(people)
# => {'アーサー': {'名前': 'アーサー・デント', '性別': '男性', '母星': '地球', '職業': 'サンドイッチ職人'},
# => 'トリリアン': {'名前': 'トリシア・マクミラン', '性別': '女性', '母星': '地球', '職業': '数学者'},
# => 'フォード': {'名前': 'フォード・プリーフェクト', '性別': '男性', '母星': 'ベテルギウス第7星', '職業': '研究者'},
# => 'ロボット': {'名前': 'マーヴィン', '性別': '不明', '母星': '不明', '職業': '偏執症アンドロイド'}}
↑以下、上述コードの説明
pprintモジュールのpprint関数は、複合データ構造を人間がわかりやすい形に整形して標準出力に出力する- 関数名
pprintは'pretty print'の略 - 辞書
people各行が、画面上の1行として表示されている
- 関数名
pprint関数を使っても、辞書peopleのデータ構造そのものに変化はない{と}が5つずつ存在する
複合データ構造のデータにアクセスする
print(people['アーサー'])
# => {'名前': 'アーサー・デント', '性別': '男性', '職業': 'サンドイッチ職人', '母星': '地球'}
↑辞書peopleの、'アーサー'というキーを持つ行にアクセスする
print(people['アーサー']['職業']) # => 'サンドイッチ職人'
↑辞書peopleの、'アーサー'というキーを持つ行の'職業'というキーを持つ属性にアクセスする