この記事では
pythonの基本文法である「辞書(dictionary)」の使い方を
詳しくご紹介します!
辞書は様々な場面で使用できる非常に便利な文法で
プログラミングをするためには不可欠です!
使い方をしっかり確認しておきましょう!
そもそも「Pythonって何?」という方は
こちらで詳しく紹介しているので、ぜひご参考ください!
そもそも辞書(dictionary)とは何なのか
まずは「辞書(dictionary)とは何なのか」です。
辞書は複数の変数を入れておく箱!

辞書は簡単に言うと
「複数の変数を入れておく箱」みたいなものです!

なんでわざわざ箱に入れなきゃいけないの?
例えば以下のような
「各生徒テストの点数を入力して、クラス合計点を出力する」プログラムを考えます。
# "80 70 90"と入力してそれぞれをscore_1, score_2, score3に代入
score_1, score_2, score_3 = input().split()
# 合計点を計算
total_score = int(score_1) + int(score_2) + int(score_3)
# 合計点を出力
print(total_score)
もし「入力と出力って何?」や
「数値計算のやり方がわからない」という方は
こちらで詳しく紹介しているので、ぜひご参考ください!
上記のコードの場合、入力される点数が3人分のため
変数をscore_1,score_2,score_3
と用意し代入しています。
しかしこのコードだと、もし生徒の人数が30人になった時に
score_1,score_2,・・・,score_29,score_30
と
30個の変数を定義する必要があり、とても大変です。

たしかに!生徒の人数が多いほど変数も増えちゃう!
どうせ全てテストの点数なので、「テストの点数」という名前の箱に
まとめて入れることができれば楽だと思いませんか?
その箱こそが「辞書」です。
辞書を使うと、上記のコードは以下のように書くことが出来ます。
# 生徒の名前
students = ["A", "B", "C"]
# "80 70 90"と入力して、辞書にまとめて代入
scores = {}
for i, score in enumerate(input().split()):
scores[students[i]] = score
# scoresの中には入力した点数が生徒の名前とセットで入っている
print(scores)
# '{'A': '80', 'B': '70', 'C': '90'}'と出力
score_1,score_2,score_3
と書いていた部分がscores
となり
非常にスッキリしたのがわかるかと思います!
またfor文についてはこちらをご参考ください!
辞書の要素はキー(key)で指定できる!

ここまで「辞書は複数の変数を入れる箱」ということをご説明しました。
しかし箱であるならば
中の要素を出して使えないと意味がないですよね?
もちろん辞書では要素を指定して使うことが出来ます。

変数に名前を付けていないのに指定できるの??
辞書では中の要素をその要素のキー(key)で指定できます!
(辞書)[(指定する要素のキー)]
例えば先程の「テストの点数」のコードの場合
scores["B"]
とすることで2番目に入力した点数を指定できます。
# 生徒の名前
students = ["A", "B", "C"]
# "80 70 90"と入力して、辞書にまとめて代入
scores = {}
for i, score in enumerate(input().split()):
scores[students[i]] = score
# キーとして"B"を指定
print(scores["B"])
# "70"と出力
また辞書と同様に、リストでも変数をまとめて扱うことができます!
リストについてはこちらをご参考ください!
辞書の基本操作(定義・追加・置換・削除)
では次に「辞書の基本操作」を説明していきます!
辞書の基本操作は3つです。
- 辞書の定義(作成)
- 辞書へ要素の追加・置換
- 辞書の要素の削除
それぞれに詳しくご説明します!
辞書の定義(作成)

まずは「辞書の定義(作成)」です。
辞書の定義には必ず要素とセットになるキーが必要です!
(辞書)={(要素1のキー):(要素1),(要素2のキー):(要素2),・・・}
また辞書の中には型が異なる変数も入れることが出来ます!
# int型のみの辞書
int_dict = {"a":1, "b":2}
# string型のみの辞書
str_dict = {"a":"あ", "b":"い"}
# 両方の型を含んだ辞書
mix_dict = {"a":1, "b":"あ"}
変数の型については、こちらをご参考ください!
さらに辞書中の要素の数が1つもしくは何も入っていなくても定義できます。
# 要素が1つの辞書
1_dict = {"a":1}
# 要素が空の辞書
0_dict = {}
辞書の要素の追加・置換
次は「辞書の要素の追加と置換」です。

なんで追加と置換をまとめて紹介するの?
辞書では同じ操作で
- 辞書内に指定したキーが存在しなければ追加
- 辞書内に指定したキーが存在すれば置換
のように要素の追加と置換が出来るので、まとめてご紹介します。
辞書の要素の追加と置換の方法は簡単です。
(辞書)[(キー)]=(追加する要素)
scores = {"A":80, "B":70, "C":90}
# キーを"D"として60を追加
scores["D"] = 60
# {"A":80, "B":70, "C":90, "D":60}と出力
print(scores)
# キーが"B"の要素を100に置換
scores["B"] = 100
# {"A":80, "B":100, "C":90, "D":60}と出力
print(scores)

まとめて覚えられるから便利だね!
辞書の要素の追加と置換は方法が同じなので覚えやすいですが
「追加したつもりが置換してしまった」
というミスが起こる可能性もあるので注意しましょう!
また要素の追加としてsetdefaultメソッドを使用する方法もあります。
setdefaultメソッドは
- 辞書内に指定したキーが存在しなければ追加
- 辞書内に指定したキーが存在すればその要素を返す
のように、キーが存在しない場合のみ追加し置換は行わないため
誤って値を変えてしまうリスクを避けることが出来ます。
setdefaultメソッドの使い方は以下です。
(辞書).setdefault((キー),(追加する要素))
scores = {"A":80, "B":70, "C":90}
# キーを"D"として60を追加
scores.setdefault("D", 60)
# {"A":80, "B":70, "C":90, "D":60}と出力
print(scores)
# キーを"B"として100を追加するが、置換されない
scores.setdefault("B", 100)
# {"A":80, "B":70, "C":90, "D":60}と出力
print(scores)
# 70と出力
print(scores.setdefault("B", 100))
2つの方法は状況に応じて使い分けましょう!
辞書の要素の削除
次は「辞書の要素の削除」です。
主に使う削除の方法は3種類です。
- 辞書の要素を全て削除
- 指定したキーの要素を削除
- ランダムに要素を削除
辞書の要素を全て削除
まず「辞書の要素を全て削除」では、clearメソッドを使用します。
clearメソッドの使い方は非常に簡単です。
(辞書).clear()
scores = {"A":80, "B":70, "C":90}
# 要素を全て削除
scores.clear()
# {}と出力
print(scores)
指定したキーの要素を削除
次に「指定したキーの要素を削除」では、popメソッドを使用します。
popメソッドの使い方も簡単です。
(辞書).pop((キー))
scores = {"A":80, "B":70, "C":90}
# キーが"B"の要素を削除
scores.pop("B")
# {"A":80, "C":90}と出力
print(scores)
またpopメソッドでは削除した要素を変数に代入できます!
scores = {"A":80, "B":70, "C":90}
# キーが"B"の要素を削除
score = scores.pop("B")
# {"A":80, "C":90}と出力
print(scores)
# 70と出力
print(score)
そのため削除ではなく、「切り取り」のようなイメージで使用できます!
ランダムに要素を削除
最後に「ランダムに要素を削除」では、popitemメソッドを使用します。
popitemメソッドの使い方は簡単です。
(辞書).popitem()
scores = {"A":80, "B":70, "C":90}
# ランダムに要素を削除
scores.popitem()
# {"A":80, "B":70}と出力
print(scores)
popitemメソッドもpopメソッドと同様に削除した要素を変数に代入出来ます!
scores = {"A":80, "B":70, "C":90}
# ランダムに要素を削除
k, v = scores.popitem()
# {"A":80, "B":70}と出力
print(scores)
# 削除した90が出力
print(v)
# 90のキーである"C"が出力
print(k)
まとめ
今回はpythonの辞書について
- 辞書とは何なのか
- 辞書の基本操作
という流れで紹介しました。
辞書はリストと同様にプログラミングの様々な場面で使用し
効率的なコードを書くことが出来ます!
しっかりと使い方を覚えて、効率的にコードを書いていきましょう!
またPythonの基本的な文法はこちらで詳しく紹介しているので
ぜひご参考ください!