このページでは、辞書という呼ばれる型の変数について、見ていきます。配列と同じくらい頻繁に出てくる重要な概念なので、しっかりと理解していきましょう。
辞書とは
辞書とは、キーと値のペアを格納するデータ構造です。以下のような書き方をします。
{
キー名1:値1,
キー名2:値2,
...
}
これだけだとイメージがわかないので、具体例で見ていきます。次のコードを実行してみましょう。
すると、「{'name': 'Alice', 'age': 30}」という値が出力されました。このpersonが辞書型の変数ということになります。このコードで言えば、nameとageがキー名、Aliceと30がそれに対応する値、ということになります。
たとえば「名前がaliceで年齢が30の人物」といった値を扱いたいときに、辞書型の変数を使います。キーは一意(重複しないということです)であり、それぞれのキーに対応する値が存在します。
ちなみに、辞書については改行やインデントをせずに書くことも可能です。次のコードを実行してみましょう。
このコードでも問題なく実行はできます。ただ、読みやすさを考えると、キーと値のペアごとに改行を入れて書くのが望ましいです。
演習
変数personに、キー「name」の値が「Bob」、キー「age」の値が数値の25となっている辞書型の値を代入してください。
辞書の要素へのアクセス
辞書に含まれる特定の値にアクセスするには、キーを使って値を取得します。書き方は配列の添え字と似ています。次のコードを実行してみましょう。
すると「Alice」が出力されました。このコードでは、person変数のnameキーに対応する値を出力した、ということになります。
演習
person変数のageキーに対応する値を出力してください。
辞書への要素の追加・更新・削除
辞書に新しい要素を追加するには、新しいキーと値のペアを指定します。次のコードを実行してみましょう。
すると「{'name': 'Alice', 'age': 30, 'city': 'Tokyo'}」が出力されます。「city」というキーとそれに対応する値「Tokyo」が追加されていることが分かります。
もし指定したキー名に対応する値がすでに存在する場合は上書きされます。次のコードを実行してみましょう。
すると「{'name': 'Alice', 'age': 35}」が出力されます。ageというキーとそれに対応する値が上書きされ、元の値(30)がなくなっていることが分かります。
また、特定のペアを削除するには、delキーワードを使います。
すると「{'name': 'Alice'}」が出力されます。ageというキーとそれに対応する値が削除されていることが分かります。
演習
person変数のcityキーに対応する値を「Osaka」に更新してください。
存在しない要素へのアクセス
辞書からキーに対応する値を取得する際、そのキーが存在しない場合、KeyErrorという例外が発生します。次のコードを実行してみましょう。
すると、KeyErrorというエラーが発生します。これはpersonという辞書には「city」というキーが存在しないためです。
辞書にキーが存在するかどうかはinというキーワードを使って判定できます。次のコードを実行してみましょう。
すると、「True」「False」と表示されます。nameキーは辞書に存在するのに対し、cityキーは存在しないためです。存在しないキーがある場合、KeyErrorの発生でコードの実行が止まってしまうため、inキーワードで事前に確認することで、安全に辞書の値にアクセスできます。実際の使い方としては以下のような使い方です。
このように書くことで、辞書に含まれるキー名にかかわらず、KeyErrorを発生させない形にできるというわけです。