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

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)

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

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

まとめ

まとめ
まとめ

Pythonでリストの重複を削除する方法には、setやdict.fromkeysを活用する手軽な方法から、for文による手動の削除方法まで、さまざまなアプローチが存在します。どの方法も、りんごやバナナなどの果物データを例にして学んだように、重複した要素をひとつにまとめるという共通の目的を持っています。特にsetを使った方法は、同じ要素を一度だけ残すという集合の特徴を強みにして、重複削除を非常に簡単に行える点が魅力といえるでしょう。また、辞書を活用したdict.fromkeysによる重複削除は、元の順番を保ちながら重複を取り除けるため、順序の意味を重視する場面で大いに役立ちます。順番が変わってしまうsetとは異なり、最初に登場した順番を守りながら整理できるため、画面表示やデータ分析の前処理にぴったりといえます。

さらに、もとのリストを壊さずに新しいリストとして重複を削除できる点は、どちらの方法にも共通する大きな利点です。もとのデータを保持したまま別の用途に活用したい場合でも、安全に試すことができます。数値リストにおいても文字列リストにおいても、両方の方法は柔軟に対応できるため、Pythonのリスト操作を学ぶうえで基本となる知識です。りんごやみかんといった文字列のリストだけでなく、一二三四五といった数字のリストにも同じように使えるため、幅広いデータ処理に応用できます。

また、for文を使った重複削除方法も紹介しましたが、この方法は単に同じ結果を得られるというだけではありません。not in演算子を使って重複を判断し、初めて現れた要素だけを追加していくという流れは、Pythonの基本構文を理解するうえでもとても役立ちます。とくに初心者にとっては、「なぜ同じ値が増えるのか」「どうしたら防げるのか」という疑問を自分の手で解決しながら学べる機会となるため、リストの基礎をより深く理解する練習にもなります。

以下は、setとdict.fromkeysの違いを比べられる簡単なサンプルプログラムです。これまでの記事の流れをふまえながら、重複削除がどのように動くかを確認できます。

重複削除のサンプルプログラム


# setで重複削除(順番は保証されない)
data = ["りんご", "バナナ", "りんご", "みかん"]
unique_a = list(set(data))
print(unique_a)

# dict.fromkeysで順番を保って重複削除
unique_b = list(dict.fromkeys(data))
print(unique_b)

# 手動で順番を守りながら重複削除
unique_c = []
for item in data:
    if item not in unique_c:
        unique_c.append(item)
print(unique_c)

このように、Pythonのリスト操作では目的に応じて異なる方法を選択できるため、データ処理の柔軟性が大きく広がります。処理速度を優先したい場合、順番を保ちたい場合、動きを理解したい場合など、場面によって使い分けることで、より適切で読みやすいプログラムが作れます。初心者のうちにこうした違いを理解しておくと、複雑なデータを扱う場面でも迷わずコードを書けるようになるでしょう。今回扱ったset・dict.fromkeys・for文による重複削除の三つの方法は、Python学習の初期段階では特に重要な知識となります。

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

生徒

「今日のまとめで、setとdict.fromkeysの違いがすごくよく分かりました!順番が変わるかどうかが大きなポイントなんですね。」

先生

「その通りだよ。重複削除はどんなデータでもよく使う基礎だから、順番をどう扱いたいかで方法を選ぶのが大事なんだ。りんごやバナナのリストでも、実は学べることはたくさんあるんだよ。」

生徒

「for文で手動の方法も分かりやすかったです!仕組みを自分で体験できるのが良いですね。」

先生

「理解が深まるからね。Pythonではいろんな方法で同じ結果を出せるから、まずは目的をはっきりさせて、いちばん合う方法を選んでいくと良いよ。」

生徒

「これでリストの重複削除も安心して使えます!次はもっと複雑なリストにも挑戦してみますね。」

先生

「うん、ぜひやってみてね。基本を押さえていれば、どんなデータ処理でもきっと応用できるよ。」

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

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

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHPのCookieセキュリティを完全ガイド!初心者でもわかるSecureとHttpOnlyの使い方
New2
PHP
PHPのCSRF対策を完全理解!トークンを使った安全なフォーム送信の仕組みを初心者向けに徹底解説
New3
PHP
PHPのSQLインジェクション対策を完全解説!初心者でも安全にデータベースを扱う方法
New4
PHP
PHPでカウントダウンタイマーを作る方法!初心者向けにやさしく解説
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
Java&Spring記事人気No2
PHP
初心者向けPHPでMySQLからデータを取得する方法(SELECT文)完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonのリストの重複を削除する方法を解説!初心者向けにsetとdict.fromkeysの使い方をやさしく説明
No.4
Java&Spring記事人気No4
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.5
Java&Spring記事人気No5
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.6
Java&Spring記事人気No6
PHP
PHPのOAuth認証をやさしく解説!Google・Facebookログインを初心者向けに実装しよう
No.7
Java&Spring記事人気No7
PHP
PHPのXSS対策を完全ガイド!初心者でもわかる安全なWebアプリの作り方
No.8
Java&Spring記事人気No8
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
-
-