第3回では、
- 変数に名前をつけること
- 数値・文字列・真偽値といったデータ型
- コーヒー1杯分、釣り1回分のログを「1件のデータ」として表現する
ところまで進みました。
ただ、実際の生活や趣味では、
- コーヒーは毎日飲むかもしれないし
- 釣りもシーズン中は何回も行く
わけで、「1件」では終わりません。
ノートであれば、ページをめくればよいのですが、Pythonの中では
「複数件のログを、ひとまとまりとして扱う」
ための仕組みが必要です。
そこで登場するのが
- リスト(list)
- 辞書(dict)
という2つのデータ構造です。
今回のゴールは、
「1件分のログ(辞書)を、複数まとめたリスト」として扱えるようになること。
これができると、
「今シーズンの釣りログ」「最近飲んだコーヒー一覧」といったものを、Pythonの中で組み立てられるようになります。
この回のゴールと全体像
この第4回で目指すのは、次の4つです。
- リスト(list)のイメージと基本操作を理解する
- 辞書(dict)のイメージと基本操作を理解する
- 「1件分のログ」を辞書として表現できる
- 複数のログを「辞書のリスト」としてまとめて扱える
最終的には、
- コーヒーログのリスト
- 釣りログのリスト
を作って、簡単な表示までやってみます。
リスト(list)とは? 順番付きの箱のならび
まずは リスト(list) から。
リストは、
「順番付きの、値のならび(配列)」
とイメージしてもらえればOKです。
例えば、最近飲んだコーヒーの名前を3つ並べたいとします。
リストを使わない場合(バラバラな変数)
coffee1 = "エチオピア浅煎り"
coffee2 = "グアテマラ中煎り"
coffee3 = "ケニア深煎り"
これでも間違いではありませんが、
件数が増えると管理が大変
まとめて処理しづらい
という弱点があります。
リストを使うと、ひとまとまりにできる
coffees = [
"エチオピア浅煎り",
"グアテマラ中煎り",
"ケニア深煎り"
]
[ と ] で囲んで、値をカンマ(,)で区切るだけです。
これで coffees という リスト に3つのコーヒー名が「順番つき」で入ります。
リストの中身を確認するには、print() をそのまま使ってOK。
print(coffees)
実行すると、こんな感じの表示になります。
['エチオピア浅煎り', 'グアテマラ中煎り', 'ケニア深煎り']
リストの基本操作 取り出す・長さを知る・追加する
インデックスで取り出す(0から始まる)
リストの中の要素には、「インデックス(index)」という番号が振られています。
0から始まる点だけ、最初はちょっと注意。
coffees = [
"エチオピア浅煎り", # インデックス 0
"グアテマラ中煎り", # インデックス 1
"ケニア深煎り" # インデックス 2
]
print(coffees[0]) # → "エチオピア浅煎り"
print(coffees[1]) # → "グアテマラ中煎り"
print(coffees[2]) # → "ケニア深煎り"
ターミナルで実行すると以下のように出力します。

要素数(長さ)を知る:len()
print(len(coffees)) # → 3
リスト内の要素数を取得して出力できます。

上記を実行すると以下のように要素は 3 と出力します。

最後に追加する:append()
coffees.append("コロンビア中深煎り")
print(coffees)

これで、リストの「最後に」新しいコーヒー(コロンビア中深煎り)が追加されます

辞書(dict)とは? ラベル付きの情報セット
次に、辞書(dictionary) です。
辞書は
「キー(名前)と値のペアを集めたもの」
です。
ノートの例で言うと、
- 日付 → 2025/05/01
- 場所 → 中禅寺湖
- 魚種 → ブラウントラウト
- サイズ → 52cm
という「ラベル:値」のセットをひとまとめにしたイメージです。
釣りの1回分を辞書で表現する
fishing_log = {
"date": "2025/05/01",
"lake": "中禅寺湖",
"fish_type": "ブラウントラウト",
"fish_length_cm": 52,
"weather": "くもり時々晴れ",
"wind": "南西の風",
"is_released": True
}
{ と } で囲み、
"date"のような「キー(名前)」:(コロン)"2025/05/01"のような「値」
をペアで書いていきます。
キーで取り出す・値を更新する
print(fishing_log["lake"]) # → "中禅寺湖"
print(fishing_log["fish_type"]) # → "ブラウントラウト"
# 値を更新
fishing_log["fish_length_cm"] = 55 # サイズを修正
print(fishing_log["fish_length_cm"]) # → 55


存在しないキーを指定するとエラーになるので、
慣れないうちはキー名のスペルに注意しましょう。
例えば、以下の場合だと正確には fish_length_cm ですが cn とタイポしているのでエラーになります。

「辞書のリスト」でログを複数管理する
ここからが、リストと辞書の本領発揮です。
- 1件のログ:辞書(dict)
- 複数件のログ:辞書のリスト(list of dict)
という形にすると、かなり現実的な「ログ管理」っぽくなります。
コーヒーログの例
coffee_logs = [
{
"date": "2025/05/01",
"name": "エチオピア浅煎り",
"roast": "浅煎り",
"memo": "フルーティーで朝の湖に合う",
"score": 4.5
},
{
"date": "2025/05/02",
"name": "グアテマラ中煎り",
"roast": "中煎り",
"memo": "ナッツのような香りで落ち着く",
"score": 4.0
},
{
"date": "2025/05/03",
"name": "ケニア深煎り",
"roast": "深煎り",
"memo": "夜の読書に合うしっかりした苦味",
"score": 4.2
}
]
coffee_logs は「辞書が3つ入ったリスト」です。
1件ずつのログは、{...} で囲まれた辞書になっています。coffee_logs は「辞書が3つ入ったリスト」です。
1件ずつのログは、{...} で囲まれた辞書になっています。
1件ずつ表示してみる(軽く for 文)
for 文の詳しい説明は別回でやりますが、ここでは雰囲気だけ
for log in coffee_logs:
print("日付:", log["date"])
print("名前:", log["name"])
print("焙煎度:", log["roast"])
print("メモ:", log["memo"])
print("スコア:", log["score"])
print("----------------")

こうすると、リストの中のログを1件ずつ取り出して表示できます。log には、1件分の辞書が順番に入ってきます。
実行すると次のように出力されます。

釣りログを「シーズンのリスト」にしてみる
同じように、釣りログも複数件をリストで管理してみましょう。
fishing_logs = [
{
"date": "2025/04/29",
"lake": "中禅寺湖",
"fish_type": "ブラウントラウト",
"fish_length_cm": 48,
"weather": "晴れ",
"is_released": True
},
{
"date": "2025/05/01",
"lake": "中禅寺湖",
"fish_type": "ブラウントラウト",
"fish_length_cm": 52,
"weather": "くもり時々晴れ",
"is_released": True
},
{
"date": "2025/05/05",
"lake": "中禅寺湖",
"fish_type": "レイクトラウト",
"fish_length_cm": 60,
"weather": "くもり",
"is_released": False
}
]
全件をざっと表示する
for log in fishing_logs:
print("日付:", log["date"])
print("場所:", log["lake"])
print("魚種:", log["fish_type"])
print("サイズ:", log["fish_length_cm"], "cm")
print("天気:", log["weather"])
print("リリース?:", log["is_released"])
print("----------------")
ちょっとだけ「条件」を入れてみる(50cm以上だけ表示)
for 文とあわせて、少しだけ条件(if)も使ってみましょう。
(if 文そのものは別の回で詳しくやりますが、ここでは応用イメージとして。)
print("50cm以上の魚だけを表示")
print("========================")
for log in fishing_logs:
if log["fish_length_cm"] >= 50:
print("日付:", log["date"])
print("魚種:", log["fish_type"])
print("サイズ:", log["fish_length_cm"], "cm")
print("----------------")
こうすると、
- 「50cm以上」という条件を満たしたログだけ
を、絞り込んで表示できます。
ノートや記憶の中だけでは大変な「条件での振り返り」が、
Pythonだと一瞬でできる のが、こういう場面です。
今日のまとめ 「1件」から「一覧」へ
今回は、
- リスト(list):順番付きの値のならび
- 辞書(dict):キーと値のセット
- 1件分のログ → 辞書
- 複数件のログ → 辞書のリスト
という形で、コーヒーと釣りのログを「まとめて」扱う方法を見てきました。
ここまで来ると、Pythonの中で
- 「今日の1件」を丁寧に記録しつつ
- それを「シーズン全体」「最近1週間」といった視点で振り返る
という、データとしての趣味ログ が少し見えてきたはずです。
次回予告 if文とfor文で「条件」と「繰り返し」を丁寧に
この記事では、
for log in fishing_logs:if log["fish_length_cm"] >= 50:
といった書き方がさらっと出てきました。
次回は、
- if文(条件分岐)
- for文(繰り返し)
を、コーヒー・釣りログを題材にしながら、もう少し丁寧に解説していきます。
例えば、
- 「エチオピアのコーヒーだけを表示する」
- 「リリースした魚だけを集計する」
といったことを、コードで自然に書けるようになるのが次のステップです。
引き続き、湖・コーヒー・星空のそばで、ゆっくりPythonを育てていきましょう。



コメント