カテゴリ: Python 更新日: 2025/07/22

Pythonのリストの重複を削除する方法を解説!初心者向けにsetとdict.fromkeysの使い方をやさしく説明

Pythonのリストの重複を削除する方法(set() / dict.fromkeys())
Pythonのリストの重複を削除する方法(set() / dict.fromkeys())

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

生徒

「Pythonでリストを作っていたら、同じデータが何回も入ってしまいました。こういうときって、重複を消す方法ってあるんですか?」

先生

「ありますよ!Pythonではset()dict.fromkeys()という機能を使って、リストの重複を簡単に取り除くことができます。」

生徒

「おぉ!それなら安心です。どうやって使うんですか?」

先生

「それでは、Pythonでリストの重複を削除する方法について、順番に見ていきましょう!」

-

1. リストの重複とは?なぜ削除したいのか

1. リストの重複とは?なぜ削除したいのか
1. リストの重複とは?なぜ削除したいのか

まず、「重複」とは同じデータが複数ある状態のことです。たとえば次のようなリストを考えてみましょう。


data = ["りんご", "バナナ", "りんご", "みかん", "バナナ"]

このリストには「りんご」や「バナナ」が2回ずつ入っていますね。1つずつだけ残したいときに、重複を削除する方法が必要になります。

2. set()を使って重複を削除する

2. set()を使って重複を削除する
2. set()を使って重複を削除する

最も簡単な方法は、set()を使う方法です。setとは「集合」と呼ばれる型で、同じ要素を1つにまとめる特徴があります。


data = ["りんご", "バナナ", "りんご", "みかん", "バナナ"]
unique_data = list(set(data))
print(unique_data)

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

set()にリストを渡すと、自動的に重複を取り除いてくれます。そしてlist()で元のリスト型に戻すことで、通常通り使えるようになります。

3. set()は順番が変わることがある

3. set()は順番が変わることがある
3. set()は順番が変わることがある

set()は便利ですが、リストの順番が変わってしまうという注意点があります。

たとえば、元のリストが「りんご」「バナナ」「みかん」の順でも、set()を使うと並びが変わることがあります。

もし元の順番を保ちたい場合は、次に紹介するdict.fromkeys()がオススメです。

4. dict.fromkeys()で順番を保って重複を削除する

4. dict.fromkeys()で順番を保って重複を削除する
4. dict.fromkeys()で順番を保って重複を削除する

dict.fromkeys()を使うと、リストの順番をそのままに重複だけを取り除くことができます。

これは辞書(dictionary)というデータ型を使ったテクニックです。


data = ["りんご", "バナナ", "りんご", "みかん", "バナナ"]
unique_data = list(dict.fromkeys(data))
print(unique_data)

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

この方法なら、最初に出てきた順番がそのまま保たれるため、見た目を重視したいときにも使いやすいです。

-

5. 重複を削除しても元のリストは変わらない

5. 重複を削除しても元のリストは変わらない
5. 重複を削除しても元のリストは変わらない

set()dict.fromkeys()も、新しいリストを作る方法です。つまり、元のリストには影響がありません。

もとのデータを壊したくないときでも安心して使えます。


data = ["りんご", "バナナ", "りんご"]
unique = list(set(data))

print("元のリスト:", data)
print("重複削除後:", unique)

元のリスト: ['りんご', 'バナナ', 'りんご']
重複削除後: ['りんご', 'バナナ']

6. 数字でも文字列でも使える

6. 数字でも文字列でも使える
6. 数字でも文字列でも使える

set()dict.fromkeys()は、文字列だけでなく数値や混合リストにも使えます。


numbers = [1, 2, 2, 3, 4, 4, 5]
print(list(set(numbers)))

[1, 2, 3, 4, 5]

このように、リストの中に同じ内容があれば自動で1つにしてくれるので、あらゆるデータで活用できます。

7. for文で重複を手動で削除する方法もある

7. for文で重複を手動で削除する方法もある
7. for文で重複を手動で削除する方法もある

少し応用ですが、自分でfor文を使って重複を除くこともできます。初心者でも練習にはなります。


data = ["りんご", "バナナ", "りんご", "みかん"]
unique = []
for item in data:
    if item not in unique:
        unique.append(item)
print(unique)

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

この方法は処理の中身を自分で理解できるので、プログラミングの練習にもぴったりです。

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

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

カテゴリの一覧へ
新着記事
PHPでセッションを使ってフォーム入力を保持する方法を解説!初心者向けステップバイステップ
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
Pythonの変数とは?定義方法とデータ型を初心者向けに解説
PHPでメールフォームを作る方法を徹底解説!初心者向けにmail関数とPHPMailerの使い方も紹介
人気記事
No.1
PHP&Python記事人気No1
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
PHP&Python記事人気No2
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.3
PHP&Python記事人気No3
Pythonのリストを辞書に変換する方法(dict() / zip())
No.4
PHP&Python記事人気No4
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
-