よろずやIT
プログラミング

辞書(dict)型とは?キーと値で管理する書き方をPythonで解説

執筆・監修:よろずやIT編集部|編集方針を見る

結論:まずここだけ読めばOK

詳しい手順・原因は、この下で解説しています。

プログラミングのイラスト

結論: 辞書(dict)型は、キー(名前)と値のペアで、データを管理する入れ物です。リストは「番号」で取り出し、辞書は「キー」で取り出します。存在しないキーを取り出すとKeyErrorになるため、**get()**を使うと安全です。JSONやAPIの応答と形が近く、データを扱う場面で、よく使います。

辞書とは

1人の情報を、リストで管理すると、こうなります。

person = ["田中", 30, "東京"]

「30」が年齢だと、番号(1番目)から推測する必要があります。辞書なら、名前をつけて管理できます。

person = {"name": "田中", "age": 30, "city": "東京"}

変数の基本は、変数とはをご覧ください。

リストとの違い

リストは番号で、辞書はキーで取り出すことを比べた図解

リスト 辞書
取り出し方 番号(fruits[1]) キー(person["age"])
向くデータ 順番が大事な、同じ種類のデータ 名前をつけて、項目ごとに管理するデータ
例 商品名の一覧 1人分の氏名・年齢・住所

リストの基本は、配列(リスト)とはで解説しています。

基本の操作

辞書の取り出す、安全に取り出す、追加・更新、全部を回すの4つの操作を示した図解

① 取り出す

person = {"name": "田中", "age": 30}
print(person["name"])   # 田中

② 安全に取り出す:get()

存在しないキーを取り出すと、エラーになります。

print(person["email"])
# KeyError: 'email'

get() を使うと、エラーにならず、キーがなければ、既定の値を返します。

print(person.get("email", "なし"))   # なし

③ 追加・更新

person["email"] = "tanaka@example.com"   # なければ追加
person["age"] = 31                       # あれば更新

追加も更新も、同じ書き方です。キーがなければ追加、あれば値が上書きされます。

④ キーがあるか確認する

if "email" in person:
    print("あります")

⑤ 削除する

del person["city"]            # 削除(なければ KeyError)
person.pop("age")             # 取り出して削除

全部を順に処理する

for key, value in person.items():
    print(key, value)

繰り返しの基本は、ループ(繰り返し)とはをご覧ください。

キーに使える値

使える 使えない
文字列("name") リスト(あとから中身を変えられる)
数値(1) 辞書
タプル

辞書の中に辞書:入れ子

users = {
    "tanaka": {"age": 30, "city": "東京"},
    "sato": {"age": 25, "city": "大阪"},
}
print(users["tanaka"]["city"])   # 東京

JSONや、APIの応答は、このような入れ子の形をしています。階層のあるデータを、すべて調べる時は、再帰が使えることもあります。

よくあるつまずき

症状 原因 対処
KeyError 存在しないキーを取り出した キーの綴りを確認。get() を使う
値が上書きされた 同じキーに、もう一度代入した キーが重複していないか確認する
文字列と数値で一致しない "1" と 1 は、別のキー キーの型をそろえる
変更されてしまう 辞書をコピーせずに、別の変数に代入した copy() で、コピーを作る

エラーの扱い方は、例外処理とはも参考にしてください。

まとめ

関連記事:配列(リスト)とは、JSONとは、変数とは、ループ(繰り返し)とは、例外処理とは

PRPython イラストで学ぶIT入門 Python初心者と新人SEのための実務につながる基礎学習ガイド【電子書籍】[ 高市 勇気 ]

Python イラストで学ぶIT入門 Python初心者と新人SEのための実務につながる基礎学習ガイド【電子書籍】[ 高市 勇気 ]

¥990

楽天で見る
SHAREXLINEはてブ

よくある質問

Q.リストと辞書は、どう使い分けますか?

A.順番が大事な、同じ種類のデータ(商品名の一覧など)は、リストが向きます。『名前をつけて、項目ごとに管理したい』データ(1人の氏名・年齢・住所など)は、辞書が向きます。番号ではなく、意味のある名前で取り出せるため、読みやすくなります。

Q.KeyErrorが出ました。どうすればいいですか?

A.存在しないキーを、取り出そうとした時のエラーです。キーの綴りが違っていないか、データにそのキーがあるかを確認します。キーがない場合もあるなら、辞書.get(キー, 既定値) を使うと、エラーにならず、既定の値を返せます。

Q.辞書のキーには、何を使えますか?

A.文字列、数値、タプルなど、変更できない値を使えます。リストのような、あとから中身を変えられるものは、キーにできません。キーは、辞書の中で、重複できず、同じキーに代入すると、値が上書きされます。

Q.辞書の順番は、保たれますか?

A.Python 3.7以降では、追加した順番が、保たれます。ただし、辞書は、番号ではなくキーで取り出すためのものです。順番が重要なデータは、リストのほうが適しています。

Q.辞書とJSONは、同じものですか?

A.別のものですが、形が近いです。JSONは、データをやり取りするための、文字の形式です。辞書は、Pythonの中でデータを扱う入れ物です。PythonのjsonモジュールでJSONを読み込むと、辞書に変換されます。

関連記事

プログラミング用語解説

スコープ(変数の有効範囲)とは?ローカル変数・グローバル変数をPythonで解説

スコープとは、変数が使える範囲のことです。関数の中のローカル変数と、外のグローバル変数の違い、NameErrorやUnboundLocalErrorの原因と直し方、引数と戻り値で受け渡す書き方を、Pythonの短いコードと図解で解説します。

プログラミング用語解説

関数の引数とは?位置引数・キーワード引数・デフォルト値をPythonで解説

引数とは、関数に渡す値のことです。位置引数・キーワード引数・デフォルト値の違い、引数の数が合わない時のエラー、デフォルト値にリストを使ってはいけない理由を、Pythonの短いコードと図解で解説します。

プログラミング用語解説

条件分岐(if文)とは?if・elif・elseの書き方をPythonで図解

条件分岐(if文)とは、条件によって、実行する処理を切り替える仕組みです。if・elif・elseの書き方、比較演算子、andとor、よくあるつまずき(=と==、elifの順序、インデント)を、Pythonの短いコードと図解で解説します。

プログラミング用語解説

環境変数とは|.envファイルの役割と、APIキーを安全に扱う基本をやさしく解説

環境変数は、プログラムの外に置いておく「名前と値」の設定です。接続先を環境ごとに切り替える、APIキーをコードに直接書かない、といった目的で使います。.envファイルの書き方、Next.jsやVercelでの注意、GitHubに上げてしまった時の対処までをまとめます。

最新のIT関連書籍 トップ10

PR / 楽天市場の売れ筋ランキングを定期的に取得しています。価格は変動する場合があるため、購入前に各ストアでご確認ください。