Pythonのタプルをキーとする辞書を作成する方法!辞書のキーにタプルを活用しよう
生徒
「Pythonの辞書って、キーに文字や数字じゃなくて、タプルも使えるんですか?」
先生
「はい、Pythonの辞書では、変更できないデータ型ならキーに使えます。タプルもそのひとつなんですよ。」
生徒
「でもタプルって中にいろんなデータを入れられますよね?本当に大丈夫なんですか?」
先生
「いい質問ですね。では、タプルをキーにする方法を実際のコードで見ていきましょう!」
1. 辞書(ディクショナリ)とは?
Python(パイソン)では、「辞書(dictionary)」というデータ型を使うことで、名前と値のセットを保存できます。たとえば、「名前」と「電話番号」、「ユーザーID」と「ログイン回数」など、1対1で情報を関連づけたいときに便利です。
辞書の書き方は、{キー: 値}のように中かっこ({})を使います。
2. タプルとは?キーに使える理由を理解しよう
タプル(tuple)とは、Pythonのデータ型のひとつで、()で囲んで複数の値をひとまとめにできるものです。たとえば、座標(x, y)や、氏名(名字, 名前)のように複数の情報を1つにまとめたいときに使います。
タプルの特徴は「変更できない」ことです。こうしたデータは「イミュータブル(immutable)」と呼ばれ、Pythonでは辞書のキーに使うことができます。
逆に、リストや辞書のような「変更できる(ミュータブル)」なデータは、辞書のキーには使えません。
3. タプルをキーにして辞書を作る基本の例
それでは、実際にタプルをキーにした辞書を作ってみましょう。
# 都市の位置(緯度, 経度)をキーにして、都市名を値として保存する
city_map = {
(35.6895, 139.6917): "Tokyo",
(34.0522, -118.2437): "Los Angeles",
(51.5074, -0.1278): "London"
}
# Tokyoの位置情報を使って都市名を取得する
print(city_map[(35.6895, 139.6917)])
Tokyo
このように、タプルで座標をキーにして、都市名を管理することができます。
4. 辞書のキーとしてのタプルに注意点はある?
タプル自体は変更できませんが、中に変更可能なデータ(リストなど)を入れるとエラーになります。
たとえば、次のようなタプルは辞書のキーにできません。
# NGな例:タプルの中にリストがある
key = (1, [2, 3]) # リストが含まれている
# 辞書に追加しようとするとエラーになる
sample_dict = {}
sample_dict[key] = "値"
TypeError: unhashable type: 'list'
辞書のキーには、「ハッシュ可能」なデータだけが使えるというルールがあり、リストや辞書のように中身が変えられるものはNGです。
5. タプルをキーに使う実用的なケース
以下のように、タプルを使うことで、複数の条件や情報を組み合わせてキーにできるため、辞書を柔軟に活用できます。
# (姓, 名) をキーにして点数を管理
scores = {
("Yamada", "Taro"): 85,
("Suzuki", "Hanako"): 92,
("Tanaka", "Ichiro"): 78
}
# 「Suzuki Hanako」の点数を取得
print(scores[("Suzuki", "Hanako")])
92
# (年, 月) をキーにして売上金額を記録
sales = {
(2024, 1): 120000,
(2024, 2): 150000,
(2024, 3): 170000
}
# 2024年2月の売上を表示
print(sales[(2024, 2)])
150000
このように、タプルを使えば複数の要素をひとつのキーとして扱うことができるので、より複雑なデータ管理が可能になります。
6. タプルを辞書のキーに使うときのポイント
- タプルは
()で囲んだ変更できないデータ型。 - Pythonの辞書では、タプルのような「イミュータブルな型」だけがキーにできる。
- タプルの中に変更可能なデータ(リストなど)を含めるとエラーになる。
- タプルをキーにすれば、複数の情報を1つのキーとしてまとめて扱える。
- 実用的には、「座標」「氏名」「年月」などをまとめて扱う場面で役立つ。
まとめ
タプルをキーにした辞書の理解を深めよう
この記事では、Pythonにおいてタプルを辞書のキーとして活用する方法について、基礎から実用例まで丁寧に学んできました。Pythonの辞書は、キーと値を組み合わせてデータを管理できる非常に重要なデータ構造です。その中でも、タプルをキーとして使える点は、初心者がつまずきやすいポイントでありながら、理解すると一気に表現力が広がる知識でもあります。
辞書のキーには「変更できないデータ型」しか使えないというルールがあります。タプルは一度作成すると中身を変更できない性質を持っているため、この条件を満たしています。そのため、複数の値をまとめた状態でキーとして利用でき、座標情報や氏名、年月など、現実世界の情報を自然な形でPythonの辞書に落とし込むことができます。
なぜタプルが辞書のキーに向いているのか
Pythonでは、辞書のキーとして使われる値は「ハッシュ可能」である必要があります。ハッシュ可能とは、値が変化せず、同じ内容であれば常に同じ結果を返す性質を持つことを意味します。タプルはイミュータブルなデータ型であり、この条件を満たしているため、辞書のキーとして安全に利用できます。
一方で、タプルの中にリストや辞書のような変更可能なデータが含まれている場合は注意が必要です。そのようなタプルはハッシュ不可能となり、辞書のキーに指定するとエラーが発生します。この点を理解しておくことで、エラーの原因を自分で判断できるようになり、Python学習の理解度が一段階上がります。
タプルキー辞書のサンプルで復習
# (年, 月) をキーにしてイベント名を管理する辞書
events = {
(2024, 4): "入学式",
(2024, 7): "夏休み",
(2024, 12): "冬休み"
}
# 2024年7月のイベントを取得
print(events[(2024, 7)])
夏休み
このように、タプルをキーに使うことで「年」と「月」をひとまとめにした管理が可能になります。単純な文字列や数値だけでは表現しにくい情報も、タプルを使えば直感的に扱えるようになります。Pythonの辞書とタプルを組み合わせることで、データ構造の設計がより柔軟になり、実践的なプログラムを書く力が身についていきます。
初心者が押さえておきたいポイント
Python初心者の方は、「辞書のキーには何でも使えるわけではない」という点をしっかり覚えておくことが大切です。タプルは使えるが、リストは使えない、この違いを理解することで、Pythonのデータ型に対する理解が深まります。また、複数の要素をまとめてキーにできるという発想は、条件分岐やデータ集計、管理処理を考える際にも大いに役立ちます。
タプルをキーにした辞書は、学習のためだけでなく、実際の業務やアプリケーション開発でも頻繁に登場します。早い段階でこの考え方に慣れておくことで、Pythonを使ったプログラミングの幅が確実に広がっていきます。
生徒「タプルが変更できないから、辞書のキーに使えるという理由がよく分かりました。」
先生「いい理解だね。Pythonではデータ型の性質を知ることがとても大切なんだ。」
生徒「座標や年月みたいに、複数の情報をまとめたいときに便利ですね。」
先生「その通り。タプルをキーにすると、データの意味が分かりやすくなるよ。」
生徒「これからは辞書を作るときに、タプルが使えないかも考えてみます。」
先生「その意識があれば、Pythonのプログラムがどんどん読みやすくなるはずだよ。」