Pythonを学び始めると、リストやタプルの次に必ず登場するのが「辞書(dict)」です。「キーと値ってなに?」「リストとはどう違うの?」と戸惑う方も多いのではないでしょうか。この記事では、Pythonの辞書(dict)の作り方から、値の取り出し方、要素の追加・更新・削除、ループ処理、便利なメソッド、そして辞書内包表記までを初心者向けにやさしく解説します。サンプルコードはすべて実際に動く内容なので、ぜひ手を動かしながら読み進めてみてください。
コンテンツ
辞書(dict)とは?
辞書(dictionary、略してdict)は、「キー(key)」と「値(value)」をペアにして管理するデータ構造です。リストが 0, 1, 2 … という番号(インデックス)で要素を管理するのに対して、辞書は自分で決めた名前(キー)で値を取り出せるのが大きな特徴です。たとえば「国語」というキーに「80点」という値を結びつける、といったイメージですね。
リストやタプルとのデータ構造の違いを整理しておきたい方は、先にリストに要素を追加する方法やタプル(tuple)の使い方もあわせて読むと、それぞれの使い分けがより分かりやすくなります。
辞書の作り方
辞書は波かっこ {} の中に「キー: 値」をカンマ区切りで並べて作ります。空の辞書を作りたいときも {} でOKです。
scores = {"国語": 80, "数学": 95, "英語": 70}
print(scores)
# {'国語': 80, '数学': 95, '英語': 70}
empty = {}
print(type(empty))
# <class 'dict'>値の取り出し方([] と get)
キーを角かっこ [] で指定すると、対応する値を取り出せます。ただし存在しないキーを指定すると KeyError になってしまうため、エラーを避けたいときは get() メソッドが便利です。
scores = {"国語": 80, "数学": 95, "英語": 70}
print(scores["数学"])
# 95
# get() なら存在しなくてもエラーにならず None を返す
print(scores.get("理科"))
# None
# 第2引数で「無かったとき」の初期値を指定できる
print(scores.get("理科", 0))
# 0要素の追加・更新・削除
辞書に新しいキーを指定して値を代入すると要素が追加されます。すでにあるキーに代入した場合は値が上書き(更新)されます。削除には del を使います。
scores = {"国語": 80, "数学": 95}
# 追加
scores["英語"] = 70
print(scores)
# {'国語': 80, '数学': 95, '英語': 70}
# 更新(既存のキーに代入すると上書きされる)
scores["国語"] = 100
print(scores)
# {'国語': 100, '数学': 95, '英語': 70}
# 削除
del scores["数学"]
print(scores)
# {'国語': 100, '英語': 70}辞書をループ処理する
辞書を for 文で回すと、キーを1つずつ取り出せます。キーと値を同時に取り出したいときは items() メソッドを使うのが定番です。
scores = {"国語": 80, "数学": 95, "英語": 70}
# キーだけ取り出す
for key in scores.keys():
print(key)
# 国語
# 数学
# 英語
# キーと値を同時に取り出す(items)
for key, value in scores.items():
print(key, value)
# 国語 80
# 数学 95
# 英語 70for文そのものの基本をもう一度おさらいしたい方は、Pythonのfor文・range関数を攻略の記事も参考にしてみてください。
よく使う便利なメソッド
辞書には覚えておくと便利なメソッドがいくつもあります。代表的なものをまとめました。
keys():キーの一覧を取得するvalues():値の一覧を取得するitems():キーと値のペアを取得するget(キー, 初期値):エラーを出さずに値を取得するupdate(辞書):複数の要素をまとめて追加・更新するin演算子:キーが存在するか確認する
scores = {"国語": 80, "数学": 95}
# 値の一覧をリストにする
print(list(scores.values()))
# [80, 95]
# 複数の要素をまとめて追加・更新
scores.update({"英語": 70, "理科": 60})
print(scores)
# {'国語': 80, '数学': 95, '英語': 70, '理科': 60}
# キーが存在するか確認
print("数学" in scores)
# True辞書内包表記でスマートに作る
リスト内包表記と同じように、辞書も内包表記でコンパクトに作成できます。たとえば「1から5までの数とその2乗」を対応させた辞書は、次のように1行で書けます。
# 1から5の数とその2乗を辞書にする
squares = {n: n ** 2 for n in range(1, 6)}
print(squares)
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}内包表記の基本的な書き方はリスト内包表記の使い方の記事で詳しく解説しています。考え方は辞書でもほぼ同じなので、あわせてチェックしてみてください。
もっと効率的にPythonを学びたい人へ
ここまで辞書の使い方を解説してきましたが、独学だと「自分の書き方が正しいのか分からない」「エラーでつまずいて先に進めない」と感じる場面も出てきます。そんなときは、プロの講師にマンツーマンで質問できる環境があると、つまずきを一気に解消できます。未経験からPythonを習得して転職を目指したい方は、無料カウンセリングで自分に合った学習プランを相談できるプログラミングスクールを活用するのも一つの手です。
※本記事には広告(アフィリエイトリンク)を含みます。
Pythonプログラミング|マンツーマンレッスンで初めてをプロに育てる【Python Winner】![]()
まとめ
今回はPythonの辞書(dict)について、基本から実践的な使い方まで解説しました。最後に要点をおさらいしましょう。
- 辞書は「キー」と「値」をペアで管理するデータ構造
- 値の取り出しは
[]またはget()(存在しないキーでも安全なのは get) キー = 値で追加・更新、delで削除できる- ループ処理では
items()でキーと値を同時に取得できる keys()・values()・update()・inなど便利なメソッドを使いこなそう- 辞書内包表記を使えば1行でスマートに辞書を作れる
辞書はデータをまとめて扱ううえで欠かせない、とても出番の多いデータ構造です。ぜひ実際にコードを書いて、自分のものにしてくださいね。
ナノトイラボ 