【6日でできるPython入門】組み込み型 辞書

 Pythonの辞書(dictionary)は、「名前(キー)」と「値」のペアをひとまとめにして管理できる強力な組み込み型です。他の言語では「連想配列」や「ハッシュマップ」とも呼ばれます。
データの順番よりも「名前でデータを取り出したい」ときに大活躍します。
リストと並び、Pythonプログラミングで最もよく使うデータ構造のひとつです。

1.辞書の基本

1.1. 辞書の作成とアクセス

辞書は波括弧 {} で作り、キー:値 のペアをカンマ区切りで並べます。
値はどんな型でもよく、キーにはイミュータブル(変更不可)な型(主に文字列や数値、タプルなど)が使えます。

ファイル名: lesson09-1.py

# 生徒の点数を辞書で管理し、操作するプログラム

scores = {'国語': 85, '数学': 92, '理科': 78}
print("各教科の点数:", scores)

print("数学の点数は:", scores['数学'])
print("理科の点数は:", scores['理科'])

empty_dict = {}
print("空の辞書:", empty_dict)

実行結果

各教科の点数: {'国語': 85, '数学': 92, '理科': 78}
数学の点数は: 92
理科の点数は: 78
空の辞書: {}
記述内容
{'A': 1, 'B': 2}2つのキーと値からなる辞書
scores['数学']「数学」の点数を取り出す
empty_dict = {}空の辞書

1.2. dict()による変換と他の作り方

組み込み関数dict()を使うと、リストやタプルからも辞書を作れます。

ファイル名: lesson09-2.py

name_pairs = [['suzuki', 'すずき'], ['tanaka', 'たなか']]
name_dict = dict(name_pairs)
print("英語→日本語の名前変換:", name_dict)

pairs2 = ['AB', 'CD']
dict2 = dict(pairs2)
print("1文字ずつペアで辞書化:", dict2)

実行結果

英語→日本語の名前変換: {'suzuki': 'すずき', 'tanaka': 'たなか'}
1文字ずつペアで辞書化: {'A': 'B', 'C': 'D'}

2.辞書の値の追加・削除・更新

2.1. 辞書への要素追加・値の変更・削除

辞書は、キーを指定して新しい値を追加・変更できます。また、delpop()で削除できます。

ファイル名: lesson09-3.py

# 辞書の要素追加・変更・削除の例
user = {'名前': '佐藤', '年齢': 30}
user['性別'] = '女性'  # 追加
print("追加後:", user)

user['年齢'] = 31      # 値の更新
print("年齢更新後:", user)

del user['名前']       # 削除
print("名前削除後:", user)

removed = user.pop('性別')
print("性別をpopで削除(返り値):", removed)
print("最終的な辞書:", user)

実行結果

追加後: {'名前': '佐藤', '年齢': 30, '性別': '女性'}
年齢更新後: {'名前': '佐藤', '年齢': 31, '性別': '女性'}
名前削除後: {'年齢': 31, '性別': '女性'}
性別をpopで削除(返り値): 女性
最終的な辞書: {'年齢': 31}
操作例説明
user['キー名'] = 値新しいキーで追加/既存キーで更新
del user['キー名']指定キーの値を削除
user.pop('キー名')指定キーの値を削除&値を返す。

2.2. KeyErrorと存在確認

存在しないキーを指定するとKeyErrorになります。
これを避けたい場合はget()メソッドを使うと便利です。

ファイル名: lesson09-4.py

profile = {'名前': '田中'}
# print(profile['年齢'])  # KeyError
print("年齢(get使用):", profile.get('年齢', '未登録'))

実行結果

年齢(get使用): 未登録

3.辞書の主なメソッドと組み込み関数

メソッド名概要
clear全要素を削除d.clear()
copy辞書のコピーを返すd.copy()
getキーの値を取得。なければNoneや指定値を返すd.get('key', 'default')
fromkeysキーのリストから値を一律指定した辞書を作るdict.fromkeys(['a','b'], 0)
pop指定キーの要素を削除&値を返すd.pop('key')
popitem最後の要素を削除&(キー,値)ペアを返すd.popitem()
setdefaultキーがなければ追加、あれば値を返すd.setdefault('color','blue')
update他の辞書の要素を追加・上書きd.update({'key': 'value'})
組み込み関数概要
len(dict)要素数を返すlen(d)
list(dict.keys())すべてのキーをリストで返すlist(d.keys())
list(dict.values())すべての値をリストで返すlist(d.values())
list(dict.items())(キー,値)ペアのリストを返すlist(d.items())

 辞書型は「名前付きデータ管理」に最適で、プログラムのデータ整理・設定・データベースの代用など、あらゆる場面で活用されます。使い方をしっかりマスターしておきましょう!