Pythonのリストを辞書に変換する方法(dict() / zip())
生徒
「先生、Pythonでリストを辞書に変換できるって聞いたんですが、どうやるんですか?」
先生
「うん、Pythonではdict()関数とzip()関数を使えば、リストを辞書に変換できるんだ。」
生徒
「辞書って、どんなときに使うんですか?」
先生
「辞書は、データに『名前(キー)』をつけて管理したいときに使うよ。では、基本から一緒に見ていこう!」
1. 辞書(dictionary)とは?
Pythonの辞書は「キー(名前)」と「値(データ)」のペアで情報を管理するデータ型です。ノートに「見出し→内容」を書くイメージで、あとから探しやすく整理できます。順番よりも「名前で取り出せること」がポイントです。
まずは最小の例を見てみましょう。人の情報を「名前」「年齢」というキーで持たせます。
person = {"名前": "たろう", "年齢": 20}
print(person) # 全体を確認
print(person["名前"]) # キーで値を取り出す
print(type(person)) # <class 'dict'>
このように、「名前」がキー、「たろう」が値、「年齢」がキー、「20」が値という形になります。キーで指定すれば、必要な値だけをすぐ取得できます。
空の辞書から作って、あとから書き足すこともできます。紙のメモを増やす感覚です。
settings = {} # 空の辞書を用意
settings["テーマ"] = "ダーク" # 新しいキーと値を追加
settings["表示件数"] = 20
print(settings)
辞書を使うと、項目名ごとにデータを整理でき、必要な情報にすぐアクセスできます。キーは重複できない(同じ名前が2つは作れない)点だけ覚えておくと安心です。
2. リストを辞書に変換するには?
「項目名のリスト」と「値のリスト」を用意し、それらをひと組ずつ結びつけて辞書にします。イメージは、ラベル(キー)を箱(値)に貼っていく作業です。Pythonではこの結びつけにzip()、辞書化にdict()を使います。
手順はシンプルです。①キー用のリストを作る ②値のリストを作る ③結びつけて辞書にする——この3ステップだけでOK。初心者でもすぐ試せます。
# ① キー(項目名)のリスト
keys = ["名前", "年齢", "出身"]
# ② 値(データ)のリスト
values = ["はなこ", 25, "東京"]
# ③ 1対1で結びつけて辞書へ変換
person = dict(zip(keys, values))
print(person) # {'名前': 'はなこ', '年齢': 25, '出身': '東京'}
print(person["名前"]) # キーを指定して値を取り出せる
ポイントは「キーと値を同じ順番で並べる」こと。上の例のように列をそろえておけば、自然に対応づけられます。細かな仕組みは次の章で触れますが、まずはこの形を覚えておけば十分です。
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でのデータ処理の中では、リストと辞書の変換はとても基本的でよく使われます。
まとめ
ここまで、Pythonでリストを辞書に変換するやり方を順番に学んできました。まず、辞書というデータ型は「名前」と「実際のデータ」をひとまとめにして管理できる便利な入れ物だという話から始まりました。単なる数字の並びではなく、意味を持った文字列や名前を使ってデータを扱えるので、プログラムが複雑になっても迷いにくくなります。特に、人間が見ても「この中にどんな情報が入っているのか」が分かりやすくなるため、後から読み返したときの安心感がとても大きくなります。
それから、リストと辞書をつなぐ役割として登場したのがzip()でした。同じ順番に並んでいるデータを一つずつ組みにしてくれるので、ばらばらの二つのリストを丁寧につなぎ合わせることができます。プログラム初心者でも、この動きを理解しておくと、データの組み立てが落ち着いて書けるようになります。「名前の一覧」と「値の一覧」をまとめて扱いたい場面は、現実の作業でもよくあるため、この関数を知っているだけで困ることが少なくなります。
そして、ペアになったデータを辞書に変換するための道具がdict()です。特別な書き方は必要なく、ペアを渡すだけで辞書が作れるので、初心者にとってとても優しい仕組みだと言えます。もしペアの数に差があっても、短いほうに合わせて処理してくれるため、途中でエラーになって止まることもありません。ただし、データの欠けがあると正しい情報が入らない可能性があるため、必要に応じて長さを確認しておくと安心です。安全に使いたいときは、条件文を使って長さが一致しているかをチェックする方法も学びました。
辞書に変換したあとは、データの追加や修正、そして取り出しにも活用できます。「辞書は読み取り専用」というわけではなく、必要な場面に応じて中身を書き換えられます。同じキーに別の値を入れれば上書きになり、新しいキーを使えばそのまま追加になります。慣れてきたらupdate()でまとめて変更したり、setdefault()で初期値を入れたり、細かい調整ができるようになります。こうした機能がそろっているため、辞書は現場でも多くの開発者に愛用されています。
また、辞書の中身をひとつずつ確認したいときは、for文と.items()の組み合わせが大活躍します。キーと値をまとめて取り出せるため、読みやすい形で表示できます。とくに、データを画面に出したり、印刷したり、テストで確認したりする場面では、とても助けになります。値だけ欲しいなら.values()、名前だけチェックしたいなら.keys()と、状況に合わせて自由に書き分けることができます。動きが分かりやすいため、プログラムを作り慣れていない人でも理解しやすいでしょう。
最後に、辞書に変換すると便利な場面についても触れました。データの意味がはっきりしていないと、人が見てもプログラムが見ても混乱してしまいます。そこで、名前がはっきりした辞書の形にしておくことで、後から読み返したり、別の人に渡したりしても安心して扱えます。CSVのデータを読み取るときや、フォームの入力を整理したいとき、設定の項目をまとめたいときなど、初心者でもすぐに役立てられる場面がたくさんあります。
下のコードは、今回の学びを一つにまとめた例です。どの部分がどの役割なのか追いかけながら読むと、辞書の扱い方がより鮮明になります。何度も書いて試してみると、自然と頭に入り、困ったときにも思い出せるようになります。
# まとめ用サンプル
keys = ["名前", "年齢", "出身"]
values = ["ゆき", 28, "大阪"]
# リストを辞書に変換
person = dict(zip(keys, values))
# データ追加
person["趣味"] = "料理"
# 表示
for k, v in person.items():
print(k, "→", v)
名前 → ゆき
年齢 → 28
出身 → 大阪
趣味 → 料理
小さな例でも、辞書の便利さがよく分かります。意味のある名前がついたデータは、数字だけの配列よりも安心して扱えます。初心者のうちは特に、迷わない形に整理してから使うことが大切です。
生徒
「先生、リストから辞書にする方法、だいぶ分かってきました!」
先生
「よかったね。最初は難しそうに見えるけど、考え方はとても素直だよ。名前の一覧と値の一覧をつなぐだけなんだ。」
生徒
「zip()でペアにして、dict()に渡すと辞書ができるというのが印象的でした。」
先生
「その通り。ほとんどの場面でこの形が役に立つよ。しかも、あとから変更したり追加したりも自由だ。」
生徒
「辞書って、名前で値を呼び出せるから分かりやすいですね。数字の位置を覚えなくていいのが助かります。」
先生
「その気づきはとても大切だよ。コードが読みやすいほど、間違いも少なくなる。こういう積み重ねが上達につながるんだ。」
生徒
「次からは、データを扱うときに積極的に辞書を使ってみようと思います!」
先生
「いいね。実際に書いて試すほど、理解は深まるよ。」