dictionary(辞書)型

Pythonでマップ型として扱われるもののうち、基本的な組込みの型で提供されているものにdictionary型(以降、単に辞書とも書きます)があります。このページではdictionary型について説明します。

dictionary型の基本

dictionary型とは

Pythonに限らず、プログラミングでdictionaryというと、キーに対して値が設定された表のようなデータ構造を指します。日本語訳の辞書やプログラミング言語によってはハッシュと呼ぶ場合があります。

dictionary型が適しています例として、商品コードと商品名を格納したい場合が挙げられます。この場合、商品コードがキー、商品名が値となります。

dictionary型の初期化

では早速dictionary型を使ってみましょう。初期化は、中括弧の中に、コロンで区切ったキーと値の組をカンマ区切りで列挙します。サンプルで見てみましょう。

dic = {'key1': 110, 'key2': 270, 'key3': 350}
print(dic)

値へのアクセス

値へアクセスする方法は2通りあります。ひとつはlist型と同様にキーをインデックスとして指定する方法です。

この方法は、存在しないキーを指定するとエラーが発生します。

dic = {'key1': 110, 'key2': 270, 'key3': 350}
print(dic['key1']) # 110が出力される
print(dic['hoge']) # KeyErrorが発生する

また、dictionaryオブジェクトに用意されているgetメソッドを使う方法もあります。

上のサンプルをgetメソッドを使ったものに書きなおしてみましょう。

dic = {'key1': 110, 'key2': 270, 'key3': 350}
print(dic.get('key1')) # 110が出力される
print(dic.get('hoge')) # Noneが出力される

KeyErrorが発生せず、Noneが返されます。キーがない場合にNoneを取得したい場合に使えます。一方でキーがない場合はエラーで処理したい場合はインデックスを使用しましょう。

値の更新

インデックスでアクセスしたものに対し、値を代入することにより更新することができます。

dic = {'key1': 110, 'key2': 270, 'key3': 350}
dic['key1'] = 200 # 200に更新
print(dic['key1']) # 更新後の200が出力される

dict()

若干説明が前後しますが、dictionary型の生成でもう一つ、組み込みのdict()を使用する方法があります。一旦オブジェクトを生成して後から値を設定することになります。

dic = dict()
dic['key1'] = 110
dic['key2'] = 270
dic['key3'] = 350

また、パラメータで辞書を指定すると同じ辞書を生成することができます。

d1 = {'key1': 110, 'key2': 270, 'key3': 350}
d2 = dict(d1)
print(d2) # {'key2': 270, 'key1': 110, 'key3': 350}

dictionaryの要素数

dictionaryの要素数を確認する場合、listと同様にlen関数を利用します。

dic = {'key1': 110, 'key2': 270, 'key3': 350}
print(len(dic)) # 要素数の3が出力される