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

Pythonのリストの重複を削除する方法!set()やdict.fromkeys()の使い方を解説

Pythonのリストの重複を削除する方法!set()やdict.fromkeys()の使い方を解説
Pythonのリストの重複を削除する方法!set()やdict.fromkeys()の使い方を解説

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

生徒

「先生、Pythonで同じデータが何度も入っているリストがあるんですけど、重複を取り除くにはどうすればいいですか?」

先生

「Pythonでは、set()dict.fromkeys()を使えば、簡単にリストの重複を削除できますよ。」

生徒

「それってどうやって使うんですか?全然わからなくて…」

先生

「大丈夫です。初めてでもわかるように、ひとつずつ丁寧に説明していきましょう!」

1. Pythonで重複のあるリストとは?

1. Pythonで重複のあるリストとは?
1. Pythonで重複のあるリストとは?

リストとは、Pythonで複数のデータをまとめて扱える箱のようなものです。たとえば、同じ名前が何度も出てくる名簿のようなものをイメージしてください。

次のようなリストがあるとします:


names = ["たろう", "はなこ", "たろう", "じろう", "はなこ"]

このリストには「たろう」と「はなこ」が2回ずつ出てきますね。こうした重複(同じデータが繰り返されること)を取り除く方法を学んでいきましょう。

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

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

set()(セット)とは、順番を気にせず、重複を許さないデータの集まりのことです。紙に名前を書くとき、同じ名前がすでに書いてあれば新しく書かない、そんなイメージです。

次のように使います:


names = ["たろう", "はなこ", "たろう", "じろう", "はなこ"]
unique_names = list(set(names))
print(unique_names)

実行すると、重複が削除された結果が表示されます:


['たろう', 'じろう', 'はなこ']

※順番がバラバラになってしまうのがset()の特徴です。順番を大事にしたいときは、次に紹介する方法を使います。

3. dict.fromkeys()で順番を保ったまま重複削除

3. dict.fromkeys()で順番を保ったまま重複削除
3. dict.fromkeys()で順番を保ったまま重複削除

dict.fromkeys()は、Pythonの辞書という仕組みを使って、リストの順番を保ったまま重複を取り除く方法です。

辞書(dict)とは、「単語」と「意味」のように、1対1で情報を管理する箱です。

このメソッドでは、「キー」(単語のようなもの)としてリストの要素を一度だけ登録し、その順番を保ってくれます。


names = ["たろう", "はなこ", "たろう", "じろう", "はなこ"]
unique_names = list(dict.fromkeys(names))
print(unique_names)

実行結果はこうなります:


['たろう', 'はなこ', 'じろう']

リストの最初に出てきた順番のままで、重複を取り除くことができます。

4. for文を使って自分で重複を除去してみよう

4. for文を使って自分で重複を除去してみよう
4. for文を使って自分で重複を除去してみよう

Pythonには便利な機能がいろいろありますが、仕組みを理解するために、自分で重複を取り除く方法も紹介します。

ここではfor文を使って、リストを一つずつ確認しながら、同じものを二度入れないようにします。


names = ["たろう", "はなこ", "たろう", "じろう", "はなこ"]
unique_names = []

for name in names:
    if name not in unique_names:
        unique_names.append(name)

print(unique_names)

結果は以下のようになります:


['たろう', 'はなこ', 'じろう']

この方法なら、Pythonの基本的な構文の練習にもなりますね。

5. 数字や文字のリストにも使える!

5. 数字や文字のリストにも使える!
5. 数字や文字のリストにも使える!

リストの重複削除は、名前のような文字だけでなく、数字や他の種類のデータにも使えます。

たとえば、数字の入ったリスト:


numbers = [1, 2, 3, 2, 4, 1, 5]
unique_numbers = list(dict.fromkeys(numbers))
print(unique_numbers)

[1, 2, 3, 4, 5]

このように、どんなリストでも基本的には同じ方法で重複を削除できます。

6. 空リストや1つだけのリストも確認しよう

6. 空リストや1つだけのリストも確認しよう
6. 空リストや1つだけのリストも確認しよう

重複削除の処理は、空のリストや1つしか要素がないリストでも問題なく動きます。

たとえば:


empty_list = []
print(list(set(empty_list)))

one_item = ["あきこ"]
print(list(set(one_item)))

[]
['あきこ']

このように、特別なエラーもなく安全に使えるので、気軽に試してみてくださいね。

7. どの方法を使うべき?

7. どの方法を使うべき?
7. どの方法を使うべき?

状況によって、使い分けが必要です。以下のように考えると良いでしょう。

  • 順番を気にしないset()
  • 順番を保ちたいdict.fromkeys()
  • 仕組みを理解したいfor文で実装

どの方法もPython初心者にとって大切な学びになるので、実際にコードを書いて動かしてみるのがおすすめです。

まとめ

まとめ
まとめ

Pythonのリストから重複を削除する方法について学んできた内容をふりかえると、日常的に扱うデータの整理に役立つ知識が多く含まれていることが実感できます。たとえば、名簿や商品一覧、入力された値の履歴など、同じ情報が何度も繰り返される場面はプログラミングの学習でも実務でもよくあります。そんなときに、適切な方法で重複を取り除くことは、データを正しく扱ううえでとても重要です。 今回の記事では、順番を気にしない場合のset()、順序を保ったまま重複を除去できるdict.fromkeys()、そして基本構文の理解を深められるfor文による実装まで、三つの視点から重複削除の手法を学びました。それぞれの方法には特徴があり、用途や状況に合わせて使い分けることが大切です。特に、順番を崩したくないケースではdict.fromkeys()が便利であり、Python初心者にとっても扱いやすい方法と言えます。 重複削除の処理は、文字列だけでなく数字や他のデータ型にも応用でき、実際のプログラム作成においてもそのまま活用できます。また、空のリストや一つだけの要素を持つリストにも安全に適用できるため、初心者でも安心して試すことができます。こうした柔軟性の高さは、Pythonが多くの人に支持されている理由のひとつでしょう。 以下には、今回学んだ内容をふまえた応用的なサンプルプログラムを示しています。複数の方法を組み合わせて、さらに理解を深められるよう構成していますので、実際に試して結果を確認しながら理解を深めてみてください。

サンプルプログラム(応用例)


names = ["たろう", "はなこ", "たろう", "じろう", "はなこ", "さくら", "じろう"]

# set()で重複削除
unique_set = list(set(names))

# dict.fromkeys()で順序を保ちつつ重複削除
unique_ordered = list(dict.fromkeys(names))

# for文で自作の重複削除
unique_manual = []
for n in names:
    if n not in unique_manual:
        unique_manual.append(n)

print("set()を使った結果:", unique_set)
print("順序を保った結果:", unique_ordered)
print("手作業で重複削除:", unique_manual)

こうして三つの方法を並べて出力すると、結果の違いや特徴がより分かりやすくなります。同じ目的を達成するためにも、方針を変えることでコードの読みやすさや扱いやすさが変化する点は、Python学習において大きな学びとなるでしょう。どれか一つの方法にこだわるのではなく、状況に応じた最適な手段を選ぶ力を身につけることで、プログラム全体の品質も向上していきます。 また、順番を保ちながら重複を取り除きたいときには、辞書の特性を利用するというPythonらしい発想が非常に便利であり、データを整理する処理をより効率的に行うことができます。こうしたテクニックは、実務や学習で扱うあらゆるデータ処理に応用できるため、今後のプログラミングにも大いに役立つでしょう。

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

生徒

「今日学んだ方法を試してみたら、リストがすごくきれいに整理できてびっくりしました!特にdict.fromkeys()で順番が保たれるのがありがたいです。」

先生

「それはよかったですね。順番を意識した重複削除は実際のプログラムでもよく使いますし、辞書の特性を知ることでPythonへの理解もぐっと深まりますよ。」

生徒

「for文で自分で重複を取り除く方法も試したんですけど、仕組みが分かって面白かったです。こういう基本構文は繰り返し練習したくなりますね!」

先生

「とても良い姿勢です。便利な関数を使うだけでなく、自分で処理を書いてみることで、リストの扱いや条件分岐の理解にもつながります。実際に手を動かすことが何より大切ですよ。」

生徒

「はい!今回学んだ三つの方法を状況によって使い分けられるように、これからもたくさん練習していきます!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Pythonでリストの重複を削除するにはどんな方法がありますか?

Pythonではリストの重複を削除する方法として、set()、dict.fromkeys()、for文を使った手動の方法などがあります。それぞれ使い方や特徴が異なるため、状況に応じて使い分けることが重要です。
カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説