mei_13のPython講座 ロゴ

【解説】Pythonの強力なデータ管理術:「辞書(dict)」をマスターしましょう




Pythonの強力なデータ管理術:「辞書(dict)」をマスターしましょう


Yukiのアイコン
【Yuki】 ひろき君、こんにちは。今日はPythonの中でもとっても便利で、実用的なツールである「辞書(dict)」について、一緒にお勉強できればな……と思っています。


Hirokiのアイコン
【Hiroki】 Yukiさん、こんにちは。辞書、ですか。以前教えてもらった「リスト」とはまた違うものなんですよね?


Yukiのアイコン
【Yuki】 はい、そうです。リストは「順番」を大切にするデータの集まりでしたが、辞書は「意味(名前)」と「値」をセットにして管理するのが得意なんです。 たとえるなら、本物の辞書のように「単語」を引くと「その意味」が出てくる……そんなイメージでしょうか。 プログラムを書いていると、ただの数字の羅列よりも「これは何のデータなのか」をはっきりさせたい場面が多いので、辞書は本当に欠かせない存在だと思います……。


Hirokiのアイコン
【Hiroki】 なるほど。順番よりも、データ同士の結びつきが大事な時に使うんですね。

辞書の基本的な仕組み:キーと値のペア


Yukiのアイコン
【Yuki】 その通りです。辞書では、データの名前を「キー(Key)」、その中身を「値(Value)」と呼びます。この2つがペアになっているのが特徴です。 基本の書き方は、全体を波括弧 { } で囲んで、キーと値を コロン : で繋ぎます。複数のデータを入れる時は、リストと同じように カンマ , で区切ります。

# 辞書の基本的な書き方
user_profile = {
    "name": "Yuki",
    "age": 22,
    "role": "Instructor"
}


Hirokiのアイコン
【Hiroki】 "name" がキーで、"Yuki" が値ですね。見た目的にも、何の情報が入っているか分かりやすい気がします。


Yukiのアイコン
【Yuki】 そう言ってもらえると嬉しいです……。ちなみに、辞書のキーには文字列だけじゃなくて、数値なども使えます。でも、一般的には「何を表しているか分かりやすい文字列」を使うことが多いかもしれませんね。

辞書からデータを取り出す方法


Hirokiのアイコン
【Hiroki】 辞書に入れたデータを取り出す時は、どうすればいいんですか? リストの時は [0] みたいにインデックス番号を使っていましたけど。


Yukiのアイコン
【Yuki】 辞書の場合は、番号ではなくキーの名前を指定します。 辞書名["キー名"] という形ですね。

# データの取り出し
print(user_profile["name"])  # 出力: Yuki


Hirokiのアイコン
【Hiroki】 直感的ですね。でも、もし存在しないキーを指定しちゃったらどうなるんだろう……?


Yukiのアイコン
【Yuki】 あ、それは鋭い質問ですね。もし存在しないキーをそのまま指定すると、KeyError というエラーが出てプログラムが止まってしまいます。 それを防ぐために、.get() メソッドを使うのがおすすめです。これなら、キーがなくてもエラーにならずに None(空っぽ)を返してくれます。

# 安全な取り出し方
location = user_profile.get("location")
print(location)  # 出力: None (エラーにならない)


Yukiのアイコン
【Yuki】 ……実はわたし、Webサイトのプログラミング(Webデザイン)を考えるのが趣味なんですけど、サイトで使うフォントの指定なんかも辞書で管理するとすごく綺麗にまとまるんですよ。 例えば、タイトル用のフォントはこれ、本文用はこれ、といった感じで……。 そういう設定ファイルのようなものを作る時に、この辞書の構造はすごく相性がいいと思います。


Hirokiのアイコン
【Hiroki】 Webデザインですか、おしゃれですね。確かに、font_settings["title_font"] みたいに管理できたら、コードを読み返す時も迷わなそうです。

データの追加・更新・削除


Hirokiのアイコン
【Hiroki】 一度作った辞書に、後から新しいデータを追加したり、中身を書き換えたりすることもできますか?


Yukiのアイコン
【Yuki】 はい、とっても簡単ですよ。新しいキーを指定して値を代入するだけで追加できますし、既にあるキーを指定すれば上書き(更新)されます。

# データの追加
user_profile["favorite_color"] = "Light Blue"

# データの更新
user_profile["age"] = 23

# 辞書の中身を確認
print(user_profile)


Hirokiのアイコン
【Hiroki】 追加も更新も、書き方は同じなんですね。削除したい時はどうするんですか?


Yukiのアイコン
【Yuki】 削除には、del 文か .pop() メソッドを使います。 del はその場で消すだけですが、.pop()「消したデータを受け取る」ことができるので、ちょっと便利かもしれません。

# データの削除
del user_profile["role"]

# popを使った削除(削除した値を取得できる)
removed_value = user_profile.pop("age")

辞書の中身をループで処理する


Hirokiのアイコン
【Hiroki】 リストの時は for ループで中身を順番に取り出せましたよね。辞書でも同じようなことはできるんでしょうか?


Yukiのアイコン
【Yuki】 もちろんです。ただ、辞書には「キー」と「値」の2つがあるので、取り出し方にはいくつかパターンがあります。 一番よく使われるのは、.items() というメソッドを使って、両方を同時に取り出す方法だと思います……。

# キーと値を同時に取り出す
for key, value in user_profile.items():
    print(f"{key} は {value} です。")


Hirokiのアイコン
【Hiroki】 なるほど。keyvalue という2つの変数に、ペアが順番に入ってくるんですね。


Yukiのアイコン
【Yuki】 はい。もしキーだけが必要ならそのままループさせるか .keys() を、値だけが必要なら .values() を使うこともできます。 用途に合わせて使い分けられるようになると、すごく効率的にコードが書けるようになるはずです……たぶん。

辞書の応用:辞書の中に辞書を入れる


Hirokiのアイコン
【Hiroki】 もっと複雑なデータ、例えば「クラス全員のプロフィール」みたいなものを管理したい時はどうすればいいんでしょうか?


Yukiのアイコン
【Yuki】 その場合は、「辞書の中に辞書を入れる」という構造(入れ子構造)が便利です。 例えば、出席番号をキーにして、その値としてプロフィールの辞書を入れる……といった感じですね。

# 入れ子構造の辞書
students = {
    "S001": {"name": "Hiroki", "score": 95},
    "S002": {"name": "Yuki", "score": 88}
}

# データのアクセス
print(students["S001"]["name"])  # 出力: Hiroki


Hirokiのアイコン
【Hiroki】 おお、これはすごい。データベースみたいですね!


Yukiのアイコン
【Yuki】 ふふ、そうですね。この構造はJSONというデータ形式にもそっくりで、今のIT業界では標準的に使われている形なんです。 これを使いこなせると、一気に本格的なプログラムに近づけると思います……。

辞書を使う時の注意点


Hirokiのアイコン
【Hiroki】 辞書を使う時に、何か気をつけるべきことはありますか?


Yukiのアイコン
【Yuki】 そうですね……いくつかありますが、特に大切なのは「キーには重複を許さない」ということと、「キーには変更不可能なデータ(文字列や数値など)」しか使えない、という点でしょうか。 リストをキーにすることはできないので、そこだけ注意が必要かもしれません。


Hirokiのアイコン
【Hiroki】 リストは中身を変えられるから、キーにすると混乱しちゃうから……でしょうか?


Yukiのアイコン
【Yuki】 はい、その通りだと思います。ひろき君は理解が早くて助かります……。 辞書は、データを「整理整頓」するための棚のようなものです。棚のラベル(キー)が勝手に変わってしまったら、どこに何を置いたか分からなくなってしまいますからね。


Hirokiのアイコン
【Hiroki】 よく分かりました! 辞書、これからたくさん使ってみようと思います。


Yukiのアイコン
【Yuki】 ええ、ぜひ。最初は少し戸惑うかもしれませんが、慣れると手放せなくなるくらい便利なはずです。 もし分からないことがあったら、いつでも聞いてくださいね。……わたしも、ひろき君に教えながら、自分の知識を整理できている気がします。

参考資料


Yukiのアイコン
【Yuki】 もっと詳しく知りたい時は、こちらの公式サイトも見てみると勉強になるかもしれません……。


Hirokiのアイコン
【Hiroki】 ありがとうございます! さっそく、学んだ辞書を使って自分専用のツールを作ってみます。


Yukiのアイコン
【Yuki】 応援しています。……あ、でもあまり夜遅くまで頑張りすぎないでくださいね。夜型なのは、わたしだけで十分ですから……。



< Numpy-zeros
コラム一覧に戻る
クラス >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
● 高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!



AIアシスタント Yuki