はじめに
今回はPythonの辞書型についてまとめてみました!
Rubyで言う所のハッシュ、プログラミング全般では連想配列と言われるデータ型で、非常によく使いますよね。
Pythonならではのメソッドも用意されているので、ぜひマスターしましょう!
辞書型(ディクショナリー型)とは
マッピング オブジェクトは、 ハッシュ可能 な値を任意のオブジェクトに対応付けます。マッピングはミュータブルなオブジェクトです。現在、標準のマッピング型は辞書 (dictionary) だけです。 (他のコンテナについては組み込みの
list
,set
, およびtuple
クラスと、collections
モジュールを参照してください。)辞書のキーは ほぼ 任意の値です。 ハッシュ可能 でない値、つまり、リストや辞書その他のミュータブルな型 (オブジェクトの同一性ではなく値で比較されるもの) はキーとして使用できません。キーとして使われる数値型は通常の数値比較のルールに従います: もしふたつの数値が (例えば
Pythonドキュメント3.9.01
と1.0
のように) 等しければ、同じ辞書の項目として互換的に使用できます。 (ただし、コンピュータは浮動小数点数を近似値として保管するので、辞書型のキーとして使用するのはたいてい賢くありません。)
Pythonでは辞書型のさらに上の階層はマッピングオブジェクトと呼ばれるもので、
ミュータブル(変更可能)なオブジェクトになっています。
つまり値の更新や追加ができます!

タプルは確かイミュータブルなオブジェクトだったから変更とかできなかったよね?




その通り!よく覚えているね!




タプルについて怪しかったらは下の記事を確認してみてね。




辞書型は文字通り、本のように目次がついていて、それぞれに値を格納することができます。
目次がついているため、リストやタプルよりも検索するスピードが早いと言われています。
具体的な例で言えば以下のようなコードになります。
# 一般的な見方
{キー: バリュー(値)}
# 具体例①
# 左側がキー、右側がバリュー(値)
{"name": "kumakun"}
# 具体例②
# キーは数字も設定することができる
{0: "samesan"}
辞書型の使い方
辞書型の定義
主によく使う辞書型の定義は2つです。
- {}で囲う。
- dictメソッドを使う。
どちらも生成されると{}の中にキーとバリューが入ります。
# {}で加工
{"name": "kumakun", "sex": "men"}
# dictメソッドを使う
dict("name"= "kumakun", "sex" = "men")
# 番外編...dictメソッドの引数にリストとタプルを混ぜる
dict(["name" = "kuamkun", "sex" = "men")
辞書型の使い方
キーを取得したい: keysメソッド
辞書型に登録されているキーを全て確認したい時は
辞書型のオブジェクトにkeysメソッドを使います。
すると下のように値が返ってきます。
辞書型の情報にどんなキーをセットしていたか確認したり、キーを変更した新しい辞書型のデータを作りたいときなどに有効です。
$ sample_dict = {"name": "kumakun", "sex": "men"}
$ sample_dict.keys()
>>> dict_keys(['name', 'sex'])
バリュー(値)を取得したい: valuesメソッド
辞書型のキーにどんな値が格納されているか確認したい時は
辞書型のオブジェクトにvaluesメソッドを使います。
それぞれのキーに格納されている値がそのまま返ってきます。
$ sample_dict = {"name": "kumakun", "sex": "men"}
$ sample_dict.values()
>>> dict_values(['kumakun', 'men'])
特定のキーのバリュー(値)を取得したい
辞書型に登録した情報を確認したり、取り出したい時があると思います。
その場合には方法は主に2つあります。
- 辞書型のオブジェクトに[キー名]をつける。
- getメソッドを使う
$ sample_dict = {"name": "kumakun", "sex": "men"}
# ①辞書型オブジェクト[キー名]
$ sample_dict["name"]
>>> 'kumakun'
# ②辞書型オブジェクト.get(キー名)
$ sample_dict.get("sex")
>>> "men"
辞書型のキーとバリューのセットを追加/更新したい
キーとバリューの新しいセットを追加したいと思った時はどうでしょう
- 辞書型オブジェクト[新しいキー名] = 格納したいバリュー を記述する
- 辞書型オブジェクトにupdateメソッドを使って上書きする。(引数に入れたい辞書型を定義する)
更新したい時もほぼ一緒で
- 辞書型オブジェクト[変更したいキー] = 格納したいバリュー を記述する
- 辞書型オブジェクトにupdateメソッドを使って上書きする。(引数に入れたい辞書型を定義する)
# 追記したい時
$ sample_dict = {"name": "kumakun", "sex": "men"}
# ①辞書型オブジェクト[新しいキー名]
$ sample_dict["age"] = 28
$ sample_dict
>>> {'name': 'kumakun', 'sex': 'men', 'age': 28}
# ②辞書型オブジェクト.update(追加したい辞書型オブジェクト)
$ sample_dict.update("mentor": "samesan")
$ sample_dict
>>> {'name': 'kumakun', 'sex': 'men', 'age': 28, 'mentor': 'samesan'}
まぁ、一番手っ取り早いのは新しいキー/変更したいキーを指定する方法ですが、updateメソッドは複数のセットを登録できたり、重複しているキーのバリューは上書きすると言った便利な機能がありますので覚えておきましょう。
$ sample_dict = {"name": "kumakun", "sex": "men"}
# ①updateメソッドで複数値をセットする
$ sample_dict.update("age": 28,"mentor": "samesan")
$ sample_dict
>>> {'name': 'kumakun', 'sex': 'men', 'age': 28, 'mentor': 'samesan'}
# ②重複したものは上書きする
$ sample_dict.update({"name": "test", "anything": None}}
$ sample_dict
>>> {'name': 'test', 'sex': 'men', 'age': 28, 'mentor': 'samesan', "anything": None}
# ③キーとバリューが一緒のものがあったら新しく追加はしない
$ sample_dict.update({"name": "test", "status": "studying"}}
$ sample_dict
>>> {'name': 'test', 'sex': 'men', 'age': 28, 'mentor': 'samesan', "anything": None, "status": "studying"}
削除したい
削除したい場合は主に2通りあります
- 辞書型のオブジェクトにpopメソッドを使う
- delメソッドでキーを指定する。
popメソッドを使うと返り値として取り出した値が返ってきますが、元のオブジェクトを破壊的に書き換えていることを確認しましょう!
$ sample_dict = {"name": "kumakun", "sex": "men"}
# ①popメソッドで値を取り出す
$ sample_dict.pop("name")
>>> 'kumakun'
# 元のオブジェクトから"name"キーのバリューのセットが消えている。
$ sample_dict
>>> {'sex': 'men'}
$ sample_dict = {"name": "kumakun", "sex": "men"}
②delメソッドを使う
$ del sample_dict["name"]
$ sample_dict
>>> {'sex': 'men'}
終わりに
- {}で囲うだけではなく。dictメソッドでも定義できる。
- 基本的に左がキー、右がバリュー
- 組み込まれているメソッドは他にもあるからいろいろ調べてみよう!




Pythonの学習に関しては様々本屋には書籍が並んでいますが、下記がおすすめです。
EXCELなども使ったことのない初学者の方
EXCELなどでちょっとPCの操作に慣れている方
他のプログラミング言語を少し触ったことがある方