【Python第7回】辞書(dict)とセットの活用法

Python基礎講座 全10回(第7回)

【Python第7回】辞書(dict)とセットの活用法

第3回で学んだリストより高度なデータ配列を学びます。キーと値のペアでデータを格納する「辞書(dict)」と、重複した値を自動で防いでくれる「セット(set)」の仕組みを身につけましょう。

📌 Python講座ロードマップ一覧(クリックで移動)

1. キーと値のペアで管理する「辞書(dict)」

リスト(`list`)は `[0]` や `[1]` のように「インデックス番号」で中身を管理しましたが、インデックス番号では「その値が何を意味するデータなのか」が分かりづらいという弱点があります。

この問題を解消するのが `辞書(dict型)` です。辞書は、インデックス番号の代わりに「名前(キー:Key)」を自分で用意し、それに対する「値(バリュー:Value)」をペアにして中身を紐付けます。波括弧 `{ }` で囲み、`キー : 値` をカンマ区切りで列挙して作成します。

2. 重複した値を許さない「セット(set:集合)」

もうひとつの重要なデータ構造が `セット(set型)` です。こちらも波括弧 `{ }` を使って定義しますが、辞書と違ってキーはなく、値だけを羅列します。

セットの最大の特徴は、**「重複した要素を絶対に持てない」**という特性です。同じ要素が追加されても自動的に1つとして無視されます。また、要素には「順番」という概念がなく、インデックス番号による取り出しはできません。

3. 辞書とセットを操作するコード

以下のコードは、辞書データのアクセス・値の追加、および重複登録を防ぐセットの挙動を示すコード例です。

dict_set.py
# 1. 辞書の定義と取得
user = {
    "name": "山田",
    "email": "yamada@example.com",
    "age": 20
}
print(user["name"])  # キー指定で「山田」が表示される

# 2. 辞書の新規追加・変更
user["age"] = 21      # age の値を更新
user["country"] = "JP" # 新規キーを追加
print(user)

# 3. セットの定義と重複の自動排除
unique_numbers = {1, 2, 2, 3, 3, 3}
print(unique_numbers)  # 重複が消え {1, 2, 3} と表示される

📌 空の定義にまつわるエラーの罠

空の辞書を作る時は `empty_dict = {}` と書きます。しかし、空のセットを作る時に `empty_set = {}` と書くと、Pythonはそれを「空の辞書」と解釈してしまいます。空のセットを作成する際は、必ず **`empty_set = set()`** という書き方をする必要があります。

✍️ 第7回 理解度チェック(問題)

Pythonのデータ型において、キー(Key)と値(Value)をペアにして関連付けて管理する、他の言語では連想配列やマップと呼ばれるデータ構造型名は何でしょうか?(英小文字4文字で答えてください)

※この問題の解答と解説は、ページ最下部(まとめの前)に掲載しています。

5. まとめと次回予告

第7回の講義はお疲れ様でした!今回の重要ポイントを振り返りましょう。

  • 辞書(dict)はインデックス番号の代わりに任意の文字列などのキーを使ってデータを紐付ける。
  • セット(set)は値のみを羅列して定義し、重複した要素を一切持てない集合データ。
  • 空のセットを作る時は `{}` ではなく `set()` を用いる必要がある。

次回(第8回)は、他の人が書いたファイルやPythonに標準搭載されているライブラリファイルをロードして利用する「モジュールと標準ライブラリ」について学びます。お楽しみに!

🔑 第7回 理解度チェックの解答と解説

【解説】

正解は **`dict`** です。 `type(user)` を実行すると `` と出力されます。これは dictionary(辞書)の略で、ユーザーのプロフィール情報、データベースのレコード情報など、意味を持ったラベル付きデータを格納するのにはなくてはならない標準データ構造です。