Python × 入門 | #13 辞書を使いこなそう

0-12では、リストを使って複数のデータを順番で管理しました。リストは「0番目、1番目、2番目」のように番号で取り出すときに便利です。

今回学ぶ 辞書 は、番号ではなくキーと呼ばれる名前で値を取り出すデータです。人のプロフィール、部品の在庫数、教科ごとの点数のように、「名前」と「値」をセットで管理したい場面で役立ちます。

辞書を使いこなそう

まずはPycoBlocksを開こう

下のPycoBlocksで直接作業するか、別タブで開き、生成されるPythonコードを見ながら進めてください。

用語 意味
辞書(dict) キーと値をセットで管理するデータ。{} で表す {"name": "Taro", "age": 16}
キー(key) 値を取り出すために使う名前。文字列が多い "name""math"
(value) キーに対応するデータ "Taro"80
dict.keys() 辞書に入っているキーの一覧を返すメソッド list(scores.keys())

ステップ1:辞書は「キー」と「値」のセット

辞書は、{"name": "Taro", "age": 16} のように、キーと値を : でつなげて書きます。キーを指定すると、それに対応する値を取り出せます。

辞書からキーで値を取り出す
person = {"name": "Taro", "age": 16}
print(person["name"])

person["name"] は、辞書 person の中から "name" というキーに対応する値を取り出します。この例では Taro が表示されます。

ステップ2:リストと辞書の違い

リストは順番で管理するので、scores[0] のように番号で取り出します。辞書は意味のある名前で管理するので、scores["math"] のようにキーで取り出します。

リストと辞書の使い分け
scores_list = [80, 90]
print(scores_list[0])

scores_dict = {"math": 80, "science": 90}
print(scores_dict["math"])

どちらがよいかは場面によって変わります。「先頭から順に処理したい」ならリスト、「数学の点数、理科の点数のように名前で取り出したい」なら辞書が向いています。

ステップ3:辞書に新しい値を追加しよう

辞書はあとからキーと値を追加できます。dict[key] = value の形で、指定したキーに値を入れます。すでに同じキーがある場合は、値が上書きされます。

辞書に追加してキー一覧を表示
stock = {"LED": 3, "motor": 1}
stock["sensor"] = 2
print(list(stock.keys()))

stock["sensor"] = 2 により、"sensor" というキーと 2 という値が追加されます。keys() を使うと、辞書に入っているキーの一覧を確認できます。

ステップ4:キーを順番に取り出して処理しよう

辞書そのものは「キーで取り出す」データですが、キーの一覧を作れば for と組み合わせて順番に処理できます。PycoBlocksでは、キー一覧をリストとして取り出してからループします。

辞書のキーを順に使う
scores = {"math": 80, "science": 90}
keys = list(scores.keys())

for name in keys:
    print(scores[name])

name には "math""science" のようなキーが順番に入ります。scores[name] と書くことで、そのキーに対応する点数を取り出せます。

コーディングモードで書いてみよう

辞書は、ロボットや電子工作の部品管理にも向いています。部品名をキー、個数を値にしておくと、「LEDは何個あるか」を名前で確認できます。

parts = {
    "LED": 10,
    "resistor": 25,
    "sensor": 3
}

parts["motor"] = 2

for name in list(parts.keys()):
    print(name, parts[name])

このように、辞書を使うと「何の値なのか」がコードから読み取りやすくなります。データが増えたときほど、キーの名前が役に立ちます。

演習課題

演習では 0-7 で学んだ if 文と辞書の操作を組み合わせます。値を条件で絞り込む書き方を練習します。

課題13-1:名前を取り出そう

person = {"name": "Taro", "age": 16} を作り、"name" に対応する値を表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:名前を取り出す
person = {"name": "Taro", "age": 16}
print(person["name"])

解説: person["name"] のように、角かっこの中にキーを書いて値を取り出します。

課題13-2:在庫を追加しよう

stock = {"LED": 3, "motor": 1}"sensor": 2 を追加し、キー一覧を表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:在庫を追加する
stock = {"LED": 3, "motor": 1}
stock["sensor"] = 2
print(list(stock.keys()))

解説: stock["sensor"] = 2 で新しいキーと値を追加しています。list(stock.keys()) でキー一覧をリストとして表示します。

課題13-3:教科ごとの点数を表示しよう

scores = {"math": 80, "science": 90} を作り、キー一覧を使って点数を1つずつ表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:点数を順に表示する
scores = {"math": 80, "science": 90}
keys = list(scores.keys())

for name in keys:
    print(scores[name])

解説: name にキーが順番に入り、scores[name] で対応する点数を取り出します。

課題13-4:合計金額を計算しよう

prices = {"apple": 120, "orange": 100, "grape": 180} から、すべての値段の合計を求めて表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

辞書の値の合計を求めるブロック例
prices = {"apple": 120, "orange": 100, "grape": 180}

total = 0
for name in list(prices.keys()):
    total = total + prices[name]

print(total)

解説: list(prices.keys()) でキーの一覧をリストにしてから順に取り出し、prices[name] で値段を合計しています。

課題13-5:個数が足りない部品を見つけよう

parts = {"LED": 10, "motor": 1, "sensor": 2} から、個数が3未満の部品名だけを表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

辞書から条件に合うキーを表示するブロック例
parts = {"LED": 10, "motor": 1, "sensor": 2}

for name in list(parts.keys()):
    if parts[name] < 3:
        print(name)

解説: 0-7で学んだ if と辞書を組み合わせています。値が3未満のときだけ、キーである部品名を表示します。

課題13-6:最高点の教科を探そう

scores = {"math": 80, "science": 90, "english": 75} から、最高点とその教科名を表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

辞書の最高得点を探すブロック例
scores = {"math": 80, "science": 90, "english": 75}

best_name = ""
best_score = 0
for name in list(scores.keys()):
    if scores[name] > best_score:
        best_name = name
        best_score = scores[name]

print(best_name, best_score)

解説: best_score に今まで見つけた最高点を入れておき、それより大きい点数が出たら教科名と点数を更新します。

まとめ

  • 辞書は、キーと値をセットで管理するデータです
  • dict[key] で、キーに対応する値を取り出します
  • dict[key] = value で、値の追加や上書きができます
  • keys() を使うと、辞書に入っているキーの一覧を取り出せます
  • リストは順番で管理するデータ、辞書は名前で管理するデータとして使い分けます

次は 関数 を学びます。同じ処理に名前をつけて何度も呼び出せるようになると、プログラムをさらに整理しやすくなります。→ Python × 入門 | #14 関数を作ろう

PAGE TOP