概要
「Head First Python 第2版」を進めていった中で考えたことの記録です。
Head First Python 第2版 ―頭とからだで覚えるPythonの基本
- 作者: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
の、'アーサー'
というキーを持つ行の'職業'
というキーを持つ属性にアクセスする