Pythonのリストを辞書に変換する方法(dict() / zip())
生徒
「先生、Pythonでリストを辞書に変換できるって聞いたんですが、どうやるんですか?」
先生
「うん、Pythonではdict()関数とzip()関数を使えば、リストを辞書に変換できるんだ。」
生徒
「辞書って、どんなときに使うんですか?」
先生
「辞書は、データに『名前(キー)』をつけて管理したいときに使うよ。では、基本から一緒に見ていこう!」
1. 辞書(dictionary)とは?
Pythonの辞書は「キー(名前)」と「値(データ)」のペアで情報を管理するデータ型です。
たとえば、「名前」と「年齢」をセットにして管理したいときに辞書はとても便利です。
person = {"名前": "たろう", "年齢": 20}
このように、「名前」がキー、「たろう」が値、「年齢」がキー、「20」が値という形になります。
2. リストを辞書に変換するには?
2つのリストを使って、1つは「キーのリスト」、もう1つは「値のリスト」として、それらを組み合わせて辞書にすることができます。
ここで登場するのがzip()とdict()です。
3. zip()関数の基本
zip()関数は、2つ以上のリストを「ペア(組)」にしてくれる関数です。
たとえば、次のように使います。
keys = ["名前", "年齢", "出身"]
values = ["はなこ", 25, "東京"]
zipped = zip(keys, values)
print(list(zipped))
[('名前', 'はなこ'), ('年齢', 25), ('出身', '東京')]
このように、1つずつペアになります。この状態をdict()に渡すと、辞書になります。
4. dict()関数で辞書を作る
dict()関数は、キーと値のペアをまとめて辞書に変換してくれます。
さっきのzip()の結果にdict()を使えば、簡単に辞書が完成します。
person = dict(zip(keys, values))
print(person)
{'名前': 'はなこ', '年齢': 25, '出身': '東京'}
このように、リストから辞書に変換できました。
5. リストの長さが違うとどうなる?
キーのリストと値のリストの長さが違うと、zip()は短い方に合わせます。
keys = ["A", "B", "C"]
values = [1, 2]
print(dict(zip(keys, values)))
{'A': 1, 'B': 2}
「C」は無視されます。足りないデータがあるときは注意しましょう。
6. 辞書に変換したあとに値を追加・変更するには?
辞書の値は、あとから追加や変更もできます。
person["趣味"] = "読書"
person["年齢"] = 30
print(person)
{'名前': 'はなこ', '年齢': 30, '出身': '東京', '趣味': '読書'}
このように、辞書はとても柔軟にデータを管理できます。
7. for文で辞書を表示してみよう
辞書の中身を1つずつ表示するにはfor文を使います。
for key, value in person.items():
print(key, ":", value)
名前 : はなこ
年齢 : 30
出身 : 東京
趣味 : 読書
.items()は、キーと値のセットを順番に取り出せる辞書のメソッドです。
8. こんなときにリストから辞書へ変換すると便利
リストを辞書に変換するのは、以下のような場面で便利です:
- CSVファイルなどで項目名とデータを組み合わせたいとき
- 設定情報をキーごとに管理したいとき
- Webフォームなどの入力データを扱うとき
Pythonでのデータ処理の中では、リストと辞書の変換はとても基本的でよく使われます。