カテゴリ: Python 更新日: 2025/12/14

Pythonのタプルをキーとする辞書を作成する方法!辞書のキーにタプルを活用しよう

Pythonのタプルをキーとする辞書を作成する方法!辞書のキーにタプルを活用しよう
Pythonのタプルをキーとする辞書を作成する方法!辞書のキーにタプルを活用しよう

先生と生徒の会話形式で理解しよう

生徒

「Pythonの辞書って、キーに文字や数字じゃなくて、タプルも使えるんですか?」

先生

「はい、Pythonの辞書では、変更できないデータ型ならキーに使えます。タプルもそのひとつなんですよ。」

生徒

「でもタプルって中にいろんなデータを入れられますよね?本当に大丈夫なんですか?」

先生

「いい質問ですね。では、タプルをキーにする方法を実際のコードで見ていきましょう!」

1. 辞書(ディクショナリ)とは?

1. 辞書(ディクショナリ)とは?
1. 辞書(ディクショナリ)とは?

Python(パイソン)では、「辞書(dictionary)」というデータ型を使うことで、名前と値のセットを保存できます。たとえば、「名前」と「電話番号」、「ユーザーID」と「ログイン回数」など、1対1で情報を関連づけたいときに便利です。

辞書の書き方は、{キー: 値}のように中かっこ{})を使います。

2. タプルとは?キーに使える理由を理解しよう

2. タプルとは?キーに使える理由を理解しよう
2. タプルとは?キーに使える理由を理解しよう

タプル(tuple)とは、Pythonのデータ型のひとつで、()で囲んで複数の値をひとまとめにできるものです。たとえば、座標(x, y)や、氏名(名字, 名前)のように複数の情報を1つにまとめたいときに使います。

タプルの特徴は「変更できない」ことです。こうしたデータは「イミュータブル(immutable)」と呼ばれ、Pythonでは辞書のキーに使うことができます。

逆に、リストや辞書のような「変更できる(ミュータブル)」なデータは、辞書のキーには使えません。

3. タプルをキーにして辞書を作る基本の例

3. タプルをキーにして辞書を作る基本の例
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. 辞書のキーとしてのタプルに注意点はある?

4. 辞書のキーとしてのタプルに注意点はある?
4. 辞書のキーとしてのタプルに注意点はある?

タプル自体は変更できませんが、中に変更可能なデータ(リストなど)を入れるとエラーになります

たとえば、次のようなタプルは辞書のキーにできません。


# NGな例:タプルの中にリストがある
key = (1, [2, 3])  # リストが含まれている

# 辞書に追加しようとするとエラーになる
sample_dict = {}
sample_dict[key] = "値"

TypeError: unhashable type: 'list'

辞書のキーには、「ハッシュ可能」なデータだけが使えるというルールがあり、リストや辞書のように中身が変えられるものはNGです。

5. タプルをキーに使う実用的なケース

5. タプルをキーに使う実用的なケース
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. タプルを辞書のキーに使うときのポイント

6. タプルを辞書のキーに使うときのポイント
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のプログラムがどんどん読みやすくなるはずだよ。」

カテゴリの一覧へ
新着記事
New1
Flask
認証と認可の違いを整理しよう!Flaskで押さえるべき基礎概念
New2
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New3
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New4
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.5
Java&Spring記事人気No5
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.6
Java&Spring記事人気No6
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説