カテゴリ: Python 更新日: 2026/02/04

Pythonの辞書から複数のキーを一括で削除する方法!delや辞書内包表記のテクニック

Pythonの辞書から複数のキーを一括で削除する方法!delや辞書内包表記のテクニック
Pythonの辞書から複数のキーを一括で削除する方法!delや辞書内包表記のテクニック

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

生徒

「Pythonで辞書の中から、いくつかのデータだけをまとめて消したいんですけど、どうすればいいですか?」

先生

「辞書から複数のキーを一括で削除したいときは、del文や辞書内包表記という方法が使えますよ。」

生徒

「一つずつ消すのは面倒なので助かります!具体的にどう使うんですか?」

先生

「それでは、基本から応用までやさしく解説していきましょう!」

1. Pythonの辞書とは?

1. Pythonの辞書とは?
1. Pythonの辞書とは?

辞書(dict)は、Pythonでよく使われるデータ型の一つで、「キー」と「値」をセットにして情報を管理できます。現実世界でいうと、単語帳や連絡先リストのようなイメージです。

たとえば「名前」というキーに対して「花子」という値を保存しておくことで、「名前を指定すれば対応する情報をすぐに取り出せる」のが特徴です。数値だけでなく、文字列や複数のデータもまとめて扱えます。

プログラミング未経験の方でも、データを整理する箱として考えると理解しやすいでしょう。


person = {
    "名前": "花子",
    "年齢": 20,
    "出身": "東京"
}
print(person["名前"])

この例では、「名前」「年齢」「出身」がキーで、それぞれに対応する値が保存されています。辞書を使うことで、あとから特定の情報を指定して取り出したり、不要なキーを削除したりできます。

2. del文を使って1つずつキーを削除する

2. del文を使って1つずつキーを削除する
2. del文を使って1つずつキーを削除する

del文は、辞書の中の特定のキーを指定して削除する方法です。


data = {"名前": "太郎", "年齢": 25, "趣味": "読書", "住所": "大阪"}
del data["趣味"]
print(data)

{'名前': '太郎', '年齢': 25, '住所': '大阪'}

この方法では、一度に1つのキーしか削除できません。

3. del文で複数のキーを一括で削除する

3. del文で複数のキーを一括で削除する
3. del文で複数のキーを一括で削除する

複数のキーを削除したいときは、forループを使ってdelを繰り返します。


data = {"名前": "花子", "年齢": 28, "趣味": "映画", "住所": "東京", "職業": "エンジニア"}
削除するキー = ["趣味", "職業"]
for key in 削除するキー:
    if key in data:
        del data[key]
print(data)

{'名前': '花子', '年齢': 28, '住所': '東京'}

if key in data: という条件文を使って、存在するキーだけを削除することで、エラーを防げます。

4. 辞書内包表記を使って一括削除する

4. 辞書内包表記を使って一括削除する
4. 辞書内包表記を使って一括削除する

辞書内包表記(じしょないほうひょうき)とは、条件を指定して新しい辞書を作り直す方法です。必要なデータだけを残すイメージです。


data = {"名前": "一郎", "年齢": 30, "趣味": "音楽", "住所": "名古屋", "職業": "教師"}
削除するキー = ["趣味", "住所"]
data = {k: v for k, v in data.items() if k not in 削除するキー}
print(data)

{'名前': '一郎', '年齢': 30, '職業': '教師'}

この方法では、元の辞書を変更するのではなく、新しく作り直しています。

5. delと辞書内包表記の違いと使い分け

5. delと辞書内包表記の違いと使い分け
5. delと辞書内包表記の違いと使い分け

del文は、元の辞書をそのまま変更します。一方で、辞書内包表記は、新しく辞書を作り直すので元のデータを残しておきたい場合に便利です。

  • 元の辞書を直接変更したいときdel
  • 元の辞書を残したい・条件で抽出したいとき辞書内包表記

6. キーが存在しないときの注意点

6. キーが存在しないときの注意点
6. キーが存在しないときの注意点

delで存在しないキーを削除しようとすると、エラーになります。そのため、削除前にif key in dict:と確認するのが安全です。

辞書内包表記は、指定したキーが存在していない場合でもエラーにならず、自然にスキップされるので安全に使えます。

7. 実用例:不要なデータを削除して整理する

7. 実用例:不要なデータを削除して整理する
7. 実用例:不要なデータを削除して整理する

たとえば、アンケートデータやユーザー情報の中から、使わない項目を削除したいときに役立ちます。


user_info = {
    "名前": "さくら",
    "年齢": 22,
    "性別": "女性",
    "メモ": "このデータは不要",
    "一時的なID": "temp123"
}
削除キー = ["メモ", "一時的なID"]
user_info = {k: v for k, v in user_info.items() if k not in 削除キー}
print(user_info)

{'名前': 'さくら', '年齢': 22, '性別': '女性'}

まとめ

まとめ
まとめ

今回の記事では、Pythonのプログラミングにおいて頻繁に登場する「辞書(dict)型」から、複数のキーを効率的に一括削除するテクニックについて詳しく解説してきました。データの整理やクレンジングは、プログラムを綺麗に保つだけでなく、処理速度やメモリ効率を向上させるためにも非常に重要な工程です。

基本的な削除方法の振り返り

最も直感的な方法は、del文を使用することです。単一の要素を削除するだけであれば del dictionary[key] で十分ですが、複数のキーを扱う場合にはforループとの組み合わせが必須となります。この際、最も注意すべき点は「存在しないキーを指定したときに発生するKeyError」です。実務レベルのコードでは、必ず if key in data: といった存在確認を行うか、例外処理を組み込むことが推奨されます。

辞書内包表記によるスマートなデータ操作

一方で、よりモダンで「Pythonらしい(Pythonicな)」書き方として、辞書内包表記を活用する方法を紹介しました。これは「削除する」という考え方ではなく、「必要なものだけを抽出して新しい辞書を再構築する」というアプローチです。


# 辞書内包表記の応用例
raw_data = {"id": 1, "name": "Pythoner", "tag": "test", "unused": None}
exclude_keys = ["tag", "unused"]

# 指定したキー以外で新しい辞書を作成
clean_data = {k: v for k, v in raw_data.items() if k not in exclude_keys}
print(clean_data)

{'id': 1, 'name': 'Pythoner'}

さらなる応用:pop()メソッドの活用

記事の本編では触れきれませんでしたが、削除した値を変数として再利用したい場合には pop() メソッドも有効です。pop(key, None) のように第二引数にデフォルト値を指定することで、キーが存在しなくてもエラーを出さずに処理を続行できるというメリットがあります。

現場での使い分けのポイント

開発の現場では、以下のような基準で手法を選択すると良いでしょう。

  • メモリ消費を抑えたい場合: 元のオブジェクトを直接操作する del ループ。
  • コードの可読性と安全性を優先する場合: 副作用の少ない 辞書内包表記
  • 削除したデータも後で使いたい場合: pop() メソッド。

Pythonの辞書操作は、APIから取得したJSONデータの加工や、データベースへ保存する前のバリデーションなど、あらゆる場面で活用されます。今回学んだ「一括削除」のテクニックをマスターすることで、より複雑なデータ構造も自由自在に操れるようになるはずです。ぜひ、ご自身のプロジェクトでも最適な方法を取り入れてみてください。

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

生徒

「先生、ありがとうございました!delをループで回す方法と、辞書内包表記で新しく作る方法、どちらもスッキリ理解できました。でも、実際にどっちを使うか迷っちゃいそうです。」

先生

「いい質問ですね。基本的には、元のデータを壊したくない、あるいは『特定の条件に合うものだけを集めたい』という時は辞書内包表記が一番安全ですよ。コードも1行で書けるので、後から見返した時も何をしているか分かりやすいですしね。」

生徒

「確かに、内包表記の方は『何を残すか』がハッキリ見えますね。あ、そういえば、辞書がものすごく巨大な場合でも内包表記で大丈夫なんですか?」

先生

「鋭いですね!もし辞書のデータ量が数百万件を超えるような巨大なものなら、新しく辞書を作り直す内包表記はメモリをたくさん消費してしまいます。そういう時は、delを使って元の辞書から少しずつ消していく方が効率的な場合もありますよ。状況に合わせて道具を使い分けるのがプロの技です。」

生徒

「なるほど、メモリのことまで考えるのが大事なんですね。あと、存在しないキーを消そうとしてエラーが出たときはびっくりしました。if key in data: のチェックは忘れずに入れるようにします!」

先生

「その意気です。エラー(例外)を未然に防ぐ癖をつけておくと、デバッグの苦労がぐっと減りますよ。辞書操作に慣れてくると、Pythonでのデータ処理がもっと楽しくなるはずです。次は辞書の結合や、もっと複雑なネスト構造の操作にも挑戦してみましょうか?」

生徒

「はい!どんどんコードを書いて慣れていきたいと思います。今日は本当に勉強になりました!」

カテゴリの一覧へ
新着記事
New1
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New2
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New3
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
New4
Flask
FlaskのURLルールとは?ルーティングの基本と動的URLの作り方を解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.5
Java&Spring記事人気No5
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.6
Java&Spring記事人気No6
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.7
Java&Spring記事人気No7
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説