【基本】Pythonの辞書型の宣言・操作と重要なメソッドについて解説!

2023-07-17

Pocket

こんにちは、爽です。皆さん、いかがお過ごしでしょうか?

今回はPythonの辞書型の宣言・操作と辞書型で使われる重要なメソッドについて確認します。
辞書型はリスト型と同じくらい使用頻度の高いデータ型ですので、ぜひマスターしましょう。

■この記事の対象読者
・Pythonに興味がある方
・Pythonを学び始めてみたい方
・Pythonの辞書型の詳細について知りたい方

なお、私はPythonをAnacondaをインストールしてJupyterで実行しています。MacのAnacondaのインストール方法とJupyterの使い方は下記記事にまとめているので良かったらご参考ください。

それではどうぞ!

Pythonの辞書型の特徴と宣言方法

辞書型は複数の要素を格納できる変数という点ではリスト型と同じですが、リスト型との違いはキーとそれに対応するバリューを対にして要素を格納できる点です。JavaのMapに近いデータ型です。
また、リスト型よりもアクセスが早いという特徴があるので、アプリケーションのパフォーマンスを向上させたい場合にも威力を発揮するデータ型です。

辞書型の宣言

では具体的な宣言方法についてです。
Pythonでは辞書型を{}(カーリーブラケット)でキーとバリューを囲うことで宣言できます。
辞書型に複数の要素を格納したい場合は、,(カンマ)で区切ります。

#辞書型宣言
Takeshi = {
    "gender":"man",
    "age":30,
    "hobby":"python",
    1:100
}
Takeshi
# {'gender': 'man', 'age': 30, 'hobby': 'python', 1: 100}

#データ型の確認
type(Takeshi)
# dict

Pythonでは辞書型もリスト型と同様に非常にシンプルに宣言することができます。

辞書型からバリューを取り出す方法

次は辞書型から要素を取り出す方法です。
辞書型からバリューを取り出すには、辞書名[キー]、または辞書名.get(キー])の書式で取り出せます。

辞書型からバリューを取り出す

#辞書型宣言
Takeshi = {
    "gender":"man",
    "age":30,
    "hobby":"python",
    1:100
}

#"gender"に紐づくバリューを取り出す
Takeshi["gender"]
# man

#1に紐づくバリューを取り出す
Takeshi.get(1)
# 100

存在しないキーを指定した場合

なお、宣言した辞書型に辞書名[キー]の書式で存在しないキーを指定するとKeyErrorが発生します。

#辞書名[キー]の書式で存在しないキーを指定するとKeyError
Takeshi["X"]
# ---------------------------------------------------------------------------
# KeyError                                  Traceback (most recent call last)
# Input In [15], in <cell line: 8>()
#       1 Takeshi = {
#       2     "gender":"man",
#       3     "age":30,
#       4     "hobby":"python",
#       5     1:100
#       6 }
# ----> 8 Takeshi["X"]

# KeyError: 'X'

ただし、辞書名.get(キー])の書式で取り出した場合はエラーにはならず、NonTypeが返ってきます。

#辞書名.get(キー])の書式で取り出した場合はエラーにはならず、NonTypeが返ってくる
r = Takeshi.get("X")
type(r)
# NoneType

辞書型の操作

次は辞書型の操作についてです。
辞書型の操作とは辞書型のバリューを任意の値に書き換えたり、辞書型に新しいキーバリューを追加することです。

#辞書型宣言
Takeshi = {
    "gender":"man",
    "age":30,
    "hobby":"python",
    1:100
}

#辞書型のバリューを任意の値に書き換え
Takeshi["age"] = 40
Takeshi
# {'gender': 'man', 'age': 40, 'hobby': 'python', 1: 100}

#辞書型に新しい"brand"というキーと"GU"というバリューを追加する
Takeshi["brand"] = "GU"
Takeshi
# {'gender': 'man', 'age': 40, 'hobby': 'python', 1: 100, 'brand': 'GU'}

辞書型のメソッド・関数

最後は辞書型を操作するときに使う関数とメソッドを紹介します。
なお、辞書型のメソッドは組み込み関数の為、Pythonの公式ドキュメントがあるので、このブログでは一部重要なものだけ紹介します。
>>組み込み型(Python公式ドキュメント)

#辞書型宣言
Takeshi = {
    "gender":"man",
    "age":30,
    "hobby":"python",
    1:100
}

#keys()メソッドでキーの一覧を表示する
Takeshi.keys()
# dict_keys(['gender', 'age', 'hobby', 1])

#values()メソッドでバリューの一覧を表示する
Takeshi.values()
# dict_values(['man', 30, 'python', 100])

#items()メソッドでキーバリューの一覧を表示する
Takeshi.items()
# dict_items([('gender', 'man'), ('age', 30), ('hobby', 'python'), (1, 100)])

#for文でキーバリュー一覧を表示(応用)
for key, value in Takeshi.items():
    print("key = {},value = {}".format(key,value))
# key = gender,value = man
# key = age,value = 30
# key = hobby,value = python
# key = 1,value = 100

#update()メソッドでキーバリューを追加(辞書名[キー] = バリューの書式でも可能)
Takeshi.update({"brand":"GU"})
Takeshi
# {'gender': 'man', 'age': 30, 'hobby': 'python', 1: 100, 'brand': 'GU'}

#popitem()メソッドで辞書型の最後のキーバリューをタプルで取り出して削除(Python3.7以前では任意の値を削除)
value = Takeshi.popitem()
value
# ('brand', 'GU')
Takeshi
# {'gender': 'man', 'age': 30, 'hobby': 'python', 1: 100}

#pop()メソッドで辞書型の任意の辞書型の最後のバリューを取り出して削除
value = Takeshi.pop(1)
value
# 100

#copy()メソッドで辞書を値渡しでコピー
Taro = Takeshi.copy()
Taro
# {'gender': 'man', 'age': 30, 'hobby': 'python'}
Taro["brand"] = "uniqlo"
Taro
# {'gender': 'man', 'age': 30, 'hobby': 'python', 'brand': 'uniqlo'}
Takeshi
# {'gender': 'man', 'age': 30, 'hobby': 'python'}

#clear()メソッドで辞書型の要素を全て削除
Takeshi.clear()
Takeshi
# {}

#del()メソッドで辞書型自体を削除
del Takeshi
Takeshi
# ---------------------------------------------------------------------------
# NameError                                 Traceback (most recent call last)
# Input In [16], in <cell line: 2>()
#       1 del Takeshi
# ----> 2 Takeshi

# NameError: name 'Takeshi' is not defined

参考資料

この記事はUdemyのPython+FlaskでのWebアプリケーション開発講座!!~0からFlaskをマスターしてSNSを作成する~という講座と現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルという2つの講座を参考にさせていただき、作成しました。

Python+FlaskでのWebアプリケーション開発講座!!~0からFlaskをマスターしてSNSを作成する~

Udemyより抜粋

当講座は最低限のWeb開発の知識を知っていることが前提とはなりますが、とにかくPythonの説明とFlask開発の為の説明が充実しているのでおすすめです。
28時間に及ぶ長丁場の講座にはなりますが、絶対に聞く価値がある講座です。
これをマスターすればPythonでどんなアプリケーションでも作ることができると思います。

当講座のおすすめポイントを以下にまとめておきます。

当講座のおすすめポイント

とにかく説明が充実している

Webアプリ開発におけるフレームワークがなぜ有益なのか知ることができる

セキュリティ対策、Ajaxなどの技術も知れる

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

画像に alt 属性が指定されていません。ファイル名: a1ee3d048d6aa860662b6f58c4aa167f-1024x328.png
Udemyより抜粋

当講座はPythonの基礎から応用まで幅広く学べる講座なのでおすすめです。
この講座の講師はとにかくPythonについての知識が豊富ですし、話も適度な速さで聞き取りやすいです。さすがのシリコンバレーです。
また、最後の方に機械学習で使うライブラリについても解説があるので、データサイエンス・AIについても多少知ることができます。

当講座のおすすめポイントを以下にまとめておきます。

当講座のおすすめポイント

シリコンバレーで働いているということもあり、講師のPythonの知識が豊富

話も適度な速さで聞き取りやすい

コードの意味だけでなく、それをどう応用するかまで解説してくれる

なお、Udemyについては以下の記事でまとめていますのでご参考ください。

まとめ

ということで、Pythonの辞書型の宣言・操作と辞書型で使われる重要なメソッドを解説しました。
辞書型の操作はリストと同様に使用頻度の高いデータ型なので、ぜひ押さえていただければと思います。
では、今回はここまでとさせていただきます。