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

Pythonのセット(set)とは?リストや辞書との違いを解説

Pythonのセット(set)とは?リストや辞書との違いを解説
Pythonのセット(set)とは?リストや辞書との違いを解説

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

生徒

「Pythonでセットって聞いたことがあるんですが、どんなものなんですか?」

先生

「セット(set)は、重複を許さないデータの集まりを扱うためのデータ型です。集合のような性質を持っています。」

生徒

「集合って数学のあの集合ですか?」

先生

「その通り。数学の集合と同じように、要素の重複がなく、順序もありません。リストや辞書と違う特徴を順番に見ていきましょう!」

-

1. セット(set)とは?

1. セット(set)とは?
1. セット(set)とは?

Pythonのセット(set)は、重複する値を自動的に排除するデータ型です。リストのように複数の要素をまとめて持てますが、順序は保証されません。


fruits = {"りんご", "バナナ", "みかん", "りんご"}
print(fruits)

{'りんご', 'バナナ', 'みかん'}

このように、同じ「りんご」を2回入れても、1つだけに整理されます。

2. リストとの違い

2. リストとの違い
2. リストとの違い

リストは順序を持ち、重複も許されますが、セットは順序なし・重複なしです。


list_data = ["りんご", "バナナ", "りんご"]
set_data = {"りんご", "バナナ", "りんご"}

print(list_data)  # 重複あり
print(set_data)   # 重複なし

['りんご', 'バナナ', 'りんご']
{'りんご', 'バナナ'}

重複データを取り除きたいときには、リストをセットに変換する方法が便利です。


unique_list = list(set(list_data))
print(unique_list)

['りんご', 'バナナ']

3. 辞書との違い

3. 辞書との違い
3. 辞書との違い

辞書(dict)はキーと値のペアを持つデータ型で、キーは重複できません。一方、セットはキーだけを集めたような構造で、値は持ちません。


dict_data = {"りんご": 3, "バナナ": 5}
set_data = {"りんご", "バナナ"}

print(dict_data)  # キーと値のペア
print(set_data)   # 値なし

{'りんご': 3, 'バナナ': 5}
{'りんご', 'バナナ'}

4. セットの便利な使い方

4. セットの便利な使い方
4. セットの便利な使い方

セットは集合演算が得意です。例えば、和集合(|)、積集合(&)、差集合(-)が簡単にできます。


set_a = {"りんご", "バナナ", "みかん"}
set_b = {"みかん", "ぶどう"}

print(set_a | set_b)  # 和集合
print(set_a & set_b)  # 積集合
print(set_a - set_b)  # 差集合

{'りんご', 'バナナ', 'みかん', 'ぶどう'}
{'みかん'}
{'りんご', 'バナナ'}

これにより、データの比較や重複のチェックが効率的にできます。

-

5. セットの作り方と注意点

5. セットの作り方と注意点
5. セットの作り方と注意点

空のセットを作る場合はset()を使います。{}は空の辞書を意味するので注意しましょう。


empty_set = set()
empty_dict = {}

print(type(empty_set))  # <class 'set'>
print(type(empty_dict)) # <class 'dict'>

6. セットの活用例

6. セットの活用例
6. セットの活用例

例えば、大量のデータから重複を除く、共通の要素を見つける、特定の要素だけを抽出するといった処理に向いています。


emails_a = {"a@example.com", "b@example.com", "c@example.com"}
emails_b = {"b@example.com", "c@example.com", "d@example.com"}

common = emails_a & emails_b
print(common)

{'b@example.com', 'c@example.com'}

このように、集合の性質を活かしてデータ整理ができます。

まとめ

まとめ
まとめ

Pythonのセットは、重複を自動的に取り除き、要素の集合として非常に扱いやすいデータ型であることを学んできました。リストや辞書と比べても、それぞれの特徴がはっきりしており、特に「重複のないデータを効率的に扱いたい場面」に強みを発揮します。順序を持たないという性質は、一見すると扱いづらく見えるものの、データの比較や集合演算を行う際にはとても役立ちます。数学の集合と同じ感覚で扱うことができるため、和集合・積集合・差集合といった操作を直感的に使える点も大きな魅力です。リストから重複を取り除くためにセットへ変換する方法や、辞書との構造の違いも理解することで、より柔軟にデータ処理を行えるようになります。

また、セットの用途は重複削除だけにとどまらず、異なるデータ群から共通要素を抽出する、不要な要素を差し引く、あるいは複数の集合をまとめてひとつにするなど、多様な場面で実用的です。特に、メールアドレスのような大量のデータから重複を取り除く操作は、セットを使うことでわずか数行で実現できるため、業務・学習問わず頻繁に活用されるテクニックです。構造がシンプルである分、処理速度も軽快で、大量データを扱う場面で選ばれやすいのも特徴といえます。

サンプルプログラムまとめ


# リストから重複を除きつつ、集合演算も合わせて利用する例
fruits_a = ["りんご", "バナナ", "みかん", "バナナ"]
fruits_b = ["みかん", "ぶどう", "りんご"]

# 重複を取り除く
unique_a = set(fruits_a)
unique_b = set(fruits_b)

print("重複なしA:", unique_a)
print("重複なしB:", unique_b)

# 集合演算
union_set = unique_a | unique_b     # 和集合
intersect_set = unique_a & unique_b # 積集合
diff_set = unique_a - unique_b      # 差集合

print("和集合:", union_set)
print("積集合:", intersect_set)
print("差集合:", diff_set)

# 辞書のキーとの比較例
prices = {"りんご": 120, "バナナ": 90, "ぶどう": 300}
available = {"りんご", "バナナ", "みかん"}

print("共通している果物:", available & set(prices.keys()))

このように、セットを使ったデータ処理は非常に直感的でわかりやすく、ちょっとした処理を短いコードで書ける点も優れています。特に、データの整理や整形、重複チェックを行う場面では、セットが最も効率よく動作することが多いため、日常的にPythonで作業をする中で知っておくと大きな力になります。空のセットを作る場合の注意として、{}が辞書になってしまう点にも触れましたが、これも覚えておくことでエラーの防止につながります。集合演算を理解することで、リストや辞書との相互変換も自然に使いこなせるようになり、Python全体のデータ処理能力もさらに高まっていくでしょう。

先生と生徒の振り返り会話

生徒

「セットって、ただ重複を取り除くだけのものだと思っていましたが、集合演算までできるなんて驚きました!」

先生

「そうですね。数学の集合と同じように使えるので、データの比較や整理ではとても強力な道具になりますよ。リストとセットを組み合わせると効率的です。」

生徒

「たしかにリストから重複をなくしたいとき、セットに変換するのがすごく簡単でした。辞書との違いもわかりやすかったです。」

先生

「辞書はキーと値のペア、セットはキーだけの集合という違いがポイントですね。用途に応じて使い分けるとデータ処理がスムーズになりますよ。」

生徒

「集合演算も面白かったです!データ分析にも使えそうなので、もっと練習して身につけたいと思います。」

先生

「その意欲が大切です。セットの特徴を理解すれば、Pythonで扱えるデータの幅が大きく広がりますよ。ぜひ実践で活用してみてくださいね。」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
New2
PHP
PHPのスコープとは?グローバル・ローカル・スーパーグローバルを完全解説!
New3
PHP
PHPの演算子をやさしく解説!算術・比較・論理・ビット演算子の使い方
New4
PHP
PHP の変数とは?基本的な使い方とデータ型を徹底解説!
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.2
Java&Spring記事人気No2
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.4
Java&Spring記事人気No4
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.5
Java&Spring記事人気No5
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.6
Java&Spring記事人気No6
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.7
Java&Spring記事人気No7
PHP
PHP のデータ型を完全ガイド!初心者でもわかる int, string, float, bool など
No.8
Java&Spring記事人気No8
PHP
PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
-
-