Pythonで扱うデータ構造の中でも、特によく使われるのがリストと辞書です。
リストが「順番のあるデータ」を扱うのに対して、辞書(dict)は
「キーと値の組み合わせ」でデータを管理します。
少し慣れてくると、リストと辞書を組み合わせるだけで、ほとんどの処理が書けるようになります。
この記事では、辞書の基本的な操作から、少し応用的な使い方まで順番に見ていきます。
Pythonの導入についてはこちら。
Python入門:最初のプログラムを作って実行する方法 – Lean Data Office
Python環境構築のやり方|初心者向け完全ガイド – Lean Data Office
辞書についての関連記事はこちら。
Pythonの辞書(dict)応用:カウント処理と集計を解説 – Lean Data Office
辞書の基本
まずはシンプルな辞書を用意します。
animals = {
'a': 'aardvark',
'b': 'bear',
'c': 'cat',
}

辞書はこのように「キー: 値」の形式で定義します。
ここで末尾にカンマがついていますが、これは「トレーリングカンマ」と呼ばれる書き方です。
必須ではありませんが、後から要素を追加しやすくなるため、よく使われます。
値の取り出し
辞書から値を取り出すときは、キーを使います。
print(animals['a'])

リストとは違い、「位置」ではなく「キー」でアクセスするのが特徴です。
要素の追加と更新
新しい要素を追加する場合も、同じ書き方を使います。
animals['d'] = 'dog'
print(animals)

既存のキーを指定すると、値は上書きされます。
animals['a'] = 'antelope'
print(animals)

このように、追加と更新は同じ書き方で行われます。
keysとvaluesを取得する
辞書には、キーと値をそれぞれ取得するためのメソッドがあります。
print(animals.keys())
print(animals.values())

これらはリストのように見えますが、実際には dict_keys や dict_values という専用のオブジェクトです。
そのままでもループで使うことはできますが、リストとして扱いたい場合は変換します。
keys_list = list(animals.keys())
print(keys_list)

辞書でよく起きるのが、「存在しないキーへのアクセス」です。
print(animals['e'])

これはエラーになります。
こういったケースでは、getメソッドを使うと安全に取得できます。
print(animals.get('e'))

存在しない場合は None が返ります。
さらに、デフォルト値を指定することもできます。
print(animals.get('e', 'elephant'))

この場合は “elephant” が返ります。
長さを取得する:len
辞書の要素数は len() で取得できます。
print(len(animals))

キーの数がそのまま長さになります。
リストを値に持つ辞書
実際のコードでは、辞書の値としてリストを使うこともよくあります。
animals = {
'a': ['antelope'],
'b': ['bear'],
}

このようにすると、1つのキーに対して複数の値を持たせることができます。
例えば、新しく「bison」を追加する場合を考えます。
animals['b'].append('bison')

これは問題なく動きます。
しかし、「c」のようにまだキーが存在しない場合は注意が必要です。
animals['c'].append('cat')

これはエラーになります。
この場合、先にキーが存在するか確認する必要があります。
if 'c' not in animals:
animals['c'] = []
animals['c'].append('cat')

この書き方であれば、キーの有無に関係なく安全に追加できます。
ただし、少し冗長に感じるかもしれません。
このようなケースを簡潔に書くために用意されているのが defaultdict です。
from collections import defaultdict
animals = defaultdict(list)

ここで指定している list は、「値が存在しないときに新しく作るデータの型」です。
animals['e'].append('elephant')
print(animals)

キーが存在しない場合でも、自動的に空のリストが作られ、そのまま追加されます。
さらに値を追加すると、
animals['e'].append('emu')
print(animals)

同じキーに対してリストがそのまま使われます。
まだ何も入れていないキーにアクセスすると、
print(animals['f'])
空のリストが返ります。
辞書は、Pythonで最もよく使われるデータ構造のひとつです。
リストと組み合わせることで、
- データの分類
- グループ化
- 集計
といった処理をシンプルに書くことができます。
基本の操作自体はそれほど多くありませんが、
少し慣れてくると自然に使えるようになる部分でもあります。
特に get や defaultdict は実務でもよく使われるので、
このあたりは早い段階で触れておくと後が楽になります。