5日目のゴールとテーマ
5日目のテーマは 「複数の情報を“ひとまとめ”にして扱う」 です。
昨日は「複数人の名前」をリストで扱いましたよね。
今日はさらに一歩進んで、
- 1人分の情報を「セット」で扱う
- そのセットをリストに入れて「名簿のような構造」を作る
- 辞書(dictionary)という強力なデータ構造を使う
ここまでを狙います。
今日のキーワードは 辞書(dict) です。
これを理解すると、アプリのデータ構造が一気に“現実に近い形”になります。
辞書(dict)とは何か
「名前」「年齢」「メールアドレス」などを“セット”で持てる箱
昨日の名簿アプリでは、名前と年齢を別々のリストで持ちました。
names = ["太郎", "花子"]
ages = [20, 18]
Pythonこれはこれで動きますが、
「名前と年齢がセットで1人分」という感覚が薄いですよね。
そこで登場するのが 辞書(dictionary) です。
辞書は「キー(名前)と値(中身)」のペアをまとめたデータ構造です。
person = {
"name": "太郎",
"age": 20
}
Pythonこれで「1人分の情報」をひとまとめにできます。
辞書の値を取り出す
キーを指定して中身を読む
辞書の中身は、キーを使って取り出します。
person = {"name": "太郎", "age": 20}
print(person["name"])
print(person["age"])
Python実行結果はこうなります。
太郎
20
ここでの重要ポイントは、
- リストは「番号」で取り出す
- 辞書は「名前(キー)」で取り出す
という違いです。
辞書は「意味のある名前」でアクセスできるので、
コードがとても読みやすくなります。
辞書に新しい項目を追加する
「住所」や「メールアドレス」を後から足せる
辞書は、あとから項目を追加できます。
person = {"name": "太郎", "age": 20}
person["email"] = "taro@example.com"
print(person)
Python実行結果はこうです。
{'name': '太郎', 'age': 20, 'email': 'taro@example.com'}
辞書は「柔軟に情報を増やせる」のが強みです。
辞書のリスト:アプリのデータ構造の基本形
「1人分の辞書」を「複数人分まとめたリスト」にする
ここまで来たら、アプリのデータ構造が一気に現実的になります。
people = [
{"name": "太郎", "age": 20},
{"name": "花子", "age": 18},
{"name": "次郎", "age": 22}
]
Pythonこれは「名簿そのもの」です。
- リスト → 複数人をまとめる
- 辞書 → 1人分の情報をまとめる
この組み合わせは、Pythonでアプリを作るときの“最強パターン”です。
辞書のリストをループで処理する
全員の名前と年齢を表示する
辞書のリストを for で回すと、こうなります。
people = [
{"name": "太郎", "age": 20},
{"name": "花子", "age": 18},
{"name": "次郎", "age": 22}
]
for person in people:
print(person["name"] + "(" + str(person["age"]) + "歳)")
Python実行結果はこうです。
太郎(20歳)
花子(18歳)
次郎(22歳)
ここでの重要ポイントは、
ループの中で「辞書1つ」が person に入る
ということです。
条件分岐と組み合わせる:20歳以上だけ表示
辞書の中の値を使ってフィルタする
辞書のリストは、条件分岐と相性が抜群です。
for person in people:
if person["age"] >= 20:
print(person["name"] + "さんは成人です")
Python実行結果はこうです。
太郎さんは成人です
次郎さんは成人です
辞書の中の値を使って判断できるので、
アプリのロジックがとても書きやすくなります。
辞書のリストに追加する:appendで1人分を追加
入力された情報を辞書にしてリストへ
ユーザーから名前と年齢を入力して、
辞書にしてリストに追加する例です。
people = []
name = input("名前を入力してください: ")
age_text = input("年齢を入力してください: ")
age = int(age_text)
person = {"name": name, "age": age}
people.append(person)
print(people)
Python実行例:
名前を入力してください: 太郎
年齢を入力してください: 20
[{'name': '太郎', 'age': 20}]
ここでの重要ポイントは、
辞書を作ってから append する
という流れです。
5日目のミニアプリ:コンソール版「名簿アプリ(辞書バージョン)」
名前と年齢を登録して、一覧表示する
今日の仕上げとして、辞書を使った名簿アプリを作ります。
print("=== 名簿アプリ 5日目バージョン ===")
people = []
while True:
name = input("名前を入力してください(終了するには空のままEnter): ")
if name == "":
print("入力を終了します。")
break
age_text = input("年齢を入力してください: ")
age = int(age_text)
person = {"name": name, "age": age}
people.append(person)
print("=== 名簿一覧 ===")
if len(people) == 0:
print("誰も登録されていません。")
else:
for i in range(len(people)):
person = people[i]
print(str(i + 1) + "人目: " + person["name"] + "(" + str(person["age"]) + "歳)")
Python実行すると、
「名前+年齢」をセットで登録できる名簿アプリになります。
5日目で一番大事な感覚
「1件分の情報は辞書で持つ」「複数件はリストでまとめる」
今日あなたに持ってほしい感覚はこれです。
- 辞書(dict)は「1件分の情報」をまとめる箱
- リスト(list)は「複数件の情報」をまとめる箱
- 辞書のリストは「アプリのデータ構造の基本形」
この形が理解できると、
タスク管理アプリ、商品管理アプリ、メモアプリなど、
ほとんどのアプリが作れるようになります。
5日目のまとめ
今日のキーポイントを短く整理すると、
- 辞書(dict)は「キーと値のセット」で情報をまとめられる
person["name"]のようにキーでアクセスする- 辞書はあとから項目を追加できる
- 辞書のリストは「現実のデータ構造」に近い
- 辞書+リスト+for+if の組み合わせでアプリが作れる
もし余裕があれば、今日の名簿アプリに次の機能を足してみてください。
- 年齢が20歳以上の人だけ表示する
- 名前で検索できる
- 年齢の平均を計算して表示する
どれも辞書とリストの練習になります。
ここを乗り越えると、Pythonで作れるアプリの幅が一気に広がります。
