【第16回Python基礎講座】キーと値のペア!辞書(ディクショナリ)の操作

本ページはプロモーションが含まれています
【第16回Python基礎講座】キーと値のペア!辞書(ディクショナリ)の操作
国内のAI狂い

やっほー!国内のAI狂いだよ!✨

第16回へようこそ!今回は、データ構造のラスボス「辞書(dictionary)」を紹介するよ。
「辞書」って名前の通り、言葉(キー)から意味(値)を引ける優れもの。
「出席番号(リストのインデックス)」じゃなくて、「名前」でデータを探したい時に最強の威力を発揮するよ!実務ではこれを使わない日はないってくらい重要だから、絶対マスターしてね!📚🥺

公式の「ここがわかりにくい」:関連付けられた値?

公式ドキュメントには、辞書についてこう書かれているよ。

辞書は キー(key) でインデクス化されています。(中略) 辞書は キー: 値 のペアの集合であり、キーが (辞書の中で) 一意でなければならない、と考えるとよいでしょう。

難しく書いてあるけど、要するに「ラベル(キー)と中身(値)がセットになったデータ」ってこと!
リストが「0番目の引き出し、1番目の引き出し…」っていう番号管理だとしたら、
辞書は「『お菓子』と書かれた引き出し、『文房具』と書かれた引き出し…」っていうラベル管理なんだね。

1. 辞書の作り方:{キー: 値} のペア!

要するにこれは「検索用のラベルを貼ってデータを保存する機能」だよ!

辞書は波括弧 {} を使って、キー: 値 の形で書くよ。
複数のペアがあるときはカンマ , で区切ってね。

🐍 サンプルコードを見る(クリックで開閉)
# 辞書の作成
profile = {
    "name": "AI狂い",
    "age": 20,
    "job": "ブロガー"
}

# アクセス方法:[キー] を使う
print(profile["name"])  # -> AI狂い
print(profile["age"])   # -> 20

# 存在しないキーを指定すると...?
# print(profile["weight"])  # -> KeyError(エラー)になる!
💻 実行結果:
AI狂い
20

リストの時は list[0] みたいに数字だったけど、辞書は dict["ラベル"] で中身を取り出せるんだ。
これなら「何番目だっけ?」って悩まなくて済むよね!✨

2. 【試験頻出】KeyErrorを防ぐ get() メソッド

辞書に存在しないキーを [] で指定すると、KeyError というエラーになってプログラムが止まっちゃう。
「あれば取り出す、なければ『なし』ってことにしたい」って時に使うのが get() メソッドだよ。

辞書.get(キー, デフォルト値)
キーがあればその値を、なければデフォルト値(省略するとNone)を返す。エラーにならない!
🐍 サンプルコードを見る(クリックで開閉)
profile = {"name": "AI狂い"}

# 存在するキー
print(profile.get("name"))
# -> AI狂い

# 存在しないキー(エラーにならない!)
print(profile.get("weight"))
# -> None

# 存在しない場合の値を指定することもできる
print(profile.get("weight", "非公開"))
# -> 非公開
💻 実行結果:
AI狂い
None
非公開

3. データの書き換えも簡単!

辞書はリストと同じくミュータブル(変更可能)だよ。
新しいラベルを追加したり、中身を書き換えたりできるんだ。

  • 追加・変更: 辞書[キー] = 値 (キーがあれば上書き、なければ新規追加)
  • 削除: del 辞書[キー] または pop(キー)
🐍 実験コードを見る(クリックで開閉)
menu = {"apple": 100, "banana": 200}

# 追加
menu["orange"] = 300
print(f"追加後: {menu}")

# 変更(上書き)
menu["apple"] = 150
print(f"変更後: {menu}")

# 削除
del menu["banana"]
print(f"削除後: {menu}")
💻 実行結果:
追加後: {‘apple’: 100, ‘banana’: 200, ‘orange’: 300}
変更後: {‘apple’: 150, ‘banana’: 200, ‘orange’: 300}
削除後: {‘apple’: 150, ‘orange’: 300}

4. 辞書をfor文で回すテクニック

辞書の中身を全部チェックしたい時は for 文を使うけど、回し方が3パターンあるよ。
特に items() は実務で一番使うから覚えてね!

① キーだけ取り出す(デフォルト)

for key in menu:  # menu.keys() と同じ
    print(key)    # apple, orange...

② 値だけ取り出す

for val in menu.values():
    print(val)    # 150, 300...

③ キーと値をセットで取り出す(★推奨)

for key, val in menu.items():
    print(f"{key} は {val} 円です")

items() を使うと、キーと値を同時に変数に入れられる(アンパック)から超便利!

5. 【試験頻出】キーのルール

要するにこれは「変更できるデータはラベル(キー)にできない!」というルールだよ!

辞書のキーには、「文字列」や「数値」は使えるけど、「リスト」は使えないんだ。
なぜなら、リストは中身が変わる(ミュータブル)から。
「[1, 2]の引き出し」を作った後に、リストの中身が[1, 2, 3]に変わっちゃったら、引き出しが見つからなくなっちゃうでしょ?

【重要】キーにできる条件
イミュータブル(変更不可)であること。
⭕ 文字列、数値、タプル
❌ リスト、辞書、セット

試験に出る!要注意ポイント

今回の範囲で、Python 3 エンジニア認定基礎試験によく出るポイントをまとめたよ!📝

① dict() コンストラクタ

{} だけじゃなくて、dict() 関数を使っても辞書を作れるよ。
キーワード引数を使うと、キーを文字列として書かなくていいから楽なんだ。

# {"a": 1, "b": 2} と同じ
d = dict(a=1, b=2)

② in 演算子

辞書の中にキーがあるかどうか調べるには in を使うよ。
これはキーの確認であって、値の確認ではない点に注意!

d = {"a": 1}
"a" in d  # True (キーにある)
1 in d    # False (値にはあるけどキーにはない)
💡 管理人の失敗エピソード
「辞書にキーがあったら追加、なかったら更新」みたいなロジックを書こうとして、毎回 if key in d: って書いてたんだけど、
実は d[key] = val って書くだけで「あれば上書き、なければ追加」を勝手にやってくれるんだよね。
この性質を知ってからコードが3行くらい短くなって感動したよ😭

理解度チェック!ミニクイズ

辞書の仕組み、バッチリ理解できたかな?
試験レベルの問題でチェックしてみよう!🔍

次のコードを実行した結果はどうなる?
d = {"a": 10, "b": 20}
print(d.get("c", 0))
  1. None
  2. 0
  3. KeyError
▼ クリックで正解を表示
正解: 2. 0

解説:
get("c", 0) は、「キー “c” を探して、なければデフォルト値 0 を返す」という意味だよ。
辞書に “c” はないから、0 が表示されるね。

次のうち、辞書のキーとして使用できないものは?
  1. (1, 2)
  2. "key"
  3. [1, 2]
▼ クリックで正解を表示
正解: 3. [1, 2]

解説:
リストはミュータブル(変更可能)だから、辞書のキーにはなれないよ。
タプル (1, 2) はイミュータブルだからキーにできるんだ。この違いは超重要!

辞書 d のキーと値を同時に取り出すループの書き方は?
  1. for k, v in d.items():
  2. for k, v in d.keys():
  3. for k, v in d:
▼ クリックで正解を表示
正解: 1. for k, v in d.items():

解説:
items() メソッドを使うと、(キー, 値) のタプルが返ってくるから、それを k, v で受け取るんだ。
3番の書き方はキーだけが返ってくるよ。

まとめ:次回への引き

今回は「辞書」について解説したよ!
「キーで値を検索する」という感覚、つかめたかな?これが使えるとプログラムの世界が一気に広がるよ✨

次回は、またまたループの話に戻るけど、ちょっと高度なやつ!
テーマは「ループをより深く!zip, enumerate, reversed」だよ。
「2つのリストを同時にループしたい」とか「インデックス番号も一緒に欲しい」なんて時に使う便利な関数たちを紹介するからお楽しみに!👋✨

出典: Python公式チュートリアル
Copyright © 2001-2026 Python Software Foundation. Licensed under the PSF License.

よかったらシェアしてね!
  • URLをコピーしました!
目次