dictionary(辞書)型

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

dictionary型の基本

dictionary型とは

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

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

以降、dictionary型やdictionary型変数を単に辞書と記述する場合があります。

辞書の初期化

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

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

値へのアクセス

値へアクセスする方法は2通りあります。ひとつはリストと同様にキーを大括弧で添字を指定する方法です。この方法は、存在しないキーを指定するとエラーが発生します。

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

また、getメソッドを使う方法もあります。以下のコードは上のサンプルをgetメソッドを使ったものに書きなおしています。

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

KeyErrorが発生せずNoneが返されます。キーがない場合にNoneを取得したい場合に使えます。一方でキーがない場合はエラーで処理したい場合は大括弧を使用しましょう。

値の更新

添字でアクセスしたものに対して値を代入することにより更新することができます。以下のコードでは、key1というキーに対応する値110を200に更新しています。

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

値の追加

新たなキーで更新と同様に代入すると新たな要素を追加することができます。。以下のコードでは、key4というキーに対して値400を追加しています。

d = {'key1': 110}
d['key4'] = 400 # 値を追加
print(d) # {'key1': 110, 'key4': 400}

dict()による生成

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

d = dict()
d['key1'] = 110
d['key2'] = 270
d['key3'] = 350
print(d) # {'key1': 110, 'key2': 270, 'key3': 350}

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

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

dictionaryの要素数

dictionaryの要素数を確認する場合はリストと同様にlen関数を利用します。

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