【Python】辞書キーの存在確認方法を徹底解説|サンプルコード付

※本サイトにはプロモーション・広告が含まれています。

(最終更新日:2023年7月)

✔当記事は以下のような方に向けて書かれています

「Pythonの辞書型でキーが存在するかどうかを確認する方法が知りたい」
「キーの存在チェックの効率的なやり方を身につけたい」
「実際のコードでキーの存在チェックがどのように実装されるかを見てみたい」

✔当記事でお伝えするポイント

  • Pythonの辞書型でキーの存在チェックの基本
  • 効率的なキー存在チェック方法とその実践例
  • 実際のコードでのキー存在チェックの応用シーン

当記事では、Pythonの辞書型におけるキーの存在チェックの基本から、最適な方法や実用的なコード例まで、わかりやすく解説しています。

ぜひ最後までお読みいただき、Pythonの辞書型でキーの存在チェックをマスターしてください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

はじめに

こちらでは、「Pythonの辞書型(dict)のkeyの存在確認とその活用法」についてお伝えしていきます。

Pythonの辞書型を効率的に扱うためには、keyの存在確認が重要であり、それによりデータ操作の柔軟性や効率が大幅に向上します。

  • Pythonのdictとは
  • keyの存在確認が重要な理由

Pythonのdictとは

Pythonの辞書型(dict)は、keyとvalueのペアでデータを格納するためのデータ構造です。

辞書型では、特定のkeyを指定することで、valueを効率的に取り出せます。

例えば、名前をkeyとして、年齢をvalueとする辞書型を次のように定義できます。

person = {"Alice": 25, "Bob": 30, "Charlie": 35}

ここでは、”Alice”がkeyで、25がそのkeyに対応するvalueです。

keyの存在確認が重要な理由

辞書型のvalueを取り出す際、存在しないkeyを指定するとエラーが発生します。

このようなエラーはプログラムの安定性を低下させ、想定外の動作を引き起こしてしまうでしょう。

keyの存在を確認し、存在しない場合の処理を適切に記述することが重要です。

print(person["David"])  # KeyError: 'David'

このようなエラーを避けるために、Pythonではkeyの存在を確認するためのいくつかの方法が提供されています。

keyの存在確認方法と活用例

ここでは、「keyの存在確認方法」について詳しく解説していきます。

具体的には、in演算子による確認方法、valueの存在確認、keyvalueの組み合わせでの存在確認について解説します。

  • in演算子を使ったkeyの存在確認
  • 類似の方法: valueの存在確認
  • keyとvalueの組み合わせで存在確認

in演算子を使ったkeyの存在確認

Pythonの辞書型において、keyの存在確認は in 演算子を使っておこなえます

in 演算子を使った場合、指定したkeyが辞書型の中に存在する場合は True を、存在しない場合は False を返します。

以下に詳細な活用例を示します。

  • 例: in演算子による確認
  • 例: not in演算子による確認

例: in演算子による確認

in 演算子を用いて、辞書型の中に特定のkeyが存在するかを確認しましょう。

以下の例では、 “Alice” というkeyが person 辞書の中に存在するかを確認しています。

person = {"Alice": 25, "Bob": 30, "Charlie": 35}
print("Alice" in person)  # True
print("David" in person)  # False

ここでは、”Alice”というkeyは存在するため True が出力され、一方で “David” というkeyは存在しないため False が出力されます。

例: not in演算子による確認

not in 演算子を用いると、指定したkeyが辞書型の中に存在しない場合に True を、存在する場合に False を返します。

以下に具体例を示します。

person = {"Alice": 25, "Bob": 30, "Charlie": 35}
print("Alice" not in person)  # False
print("David" not in person)  # True

上記の例では、”Alice” というkeyは存在するため False が出力され、一方で “David” というkeyは存在しないため True が出力されています。

値やキーバリューペアの存在確認方法

Pythonの辞書型では、valueや、キーバリューペアの存在確認も可能です。

これは、values() メソッドを使っておこなってください。

  • values()メソッド:バリューの確認
  • item()メソッド:キーバリューペアの確認

values()メソッド:バリューの確認

values() メソッドを使うと、辞書型の全てのvalueをリスト形式で取得できます。

そのため、特定のvalueが辞書型の中に存在するかを確認できるのです。

person = {"Alice": 25, "Bob": 30, "Charlie": 35}
print(25 in person.values())  # True
print(40 in person.values())  # False

person.values()[25, 30, 35] を返します。

その結果、25 は存在するため True が出力され、40 は存在しないため False が出力されます。

item()メソッド:キーバリューペアの確認

items() メソッドは、辞書型の全keyとvalueのペアをタプル形式でリストとして返すもの。

特定のkeyとvalueの組み合わせが存在するかを確認できます。

person = {"Alice": 25, "Bob": 30, "Charlie": 35}
print(("Alice", 25) in person.items())  # True
print(("David", 40) in person.items())  # False

上記の例では、person.items()[("Alice", 25), ("Bob", 30), ("Charlie", 35)] を返します。

その結果、("Alice", 25) は存在するため True が出力され、("David", 40) は存在しないため False が出力されます。

keyが存在しない場合の処理方法

ここでは、keyが存在しない場合の処理方法について詳しく解説します。

Pythonの辞書型では、存在しないkeyに対する処理を get() メソッドや setdefault() メソッドを使って行うことが可能です。

  • get()メソッドを使って処理する方法
  • setdefault()メソッドを使ってkeyを追加する方法

get()メソッドを使って処理する方法

キーが存在するかわからないときは、getメソッドを使う方法もおすすめです。

getメソッドでは、指定したkeyが存在しない場合、指定したデフォルト値を返すよう設定できます。

以下に具体例を示します。

person = {"Alice": 25, "Bob": 30, "Charlie": 35}
print(person.get("Alice"))  # 25
print(person.get("David", "Not found"))  # Not found

第一引数に探しているキー文字列、第二引数に見つからなかった場合のデフォルト値を設定しましょう。

もし第二引数がなければ、Noneが返ります。

setdefault()メソッドを使ってkeyを追加する方法

setdefault()メソッドは、指定したkeyが辞書に存在しない場合に、そのkeyとデフォルト値を新たに追加するもの。

keyがすでに存在する場合は何もせず、既存の値を返します。

このメソッドを使用すれば、存在しないkeyに対してデフォルト値を設定するという動作を一行で実行できます。

以下が具体的なコード例です。

person = {"Alice": 25, "Bob": 30, "Charlie": 35}
print(person.setdefault("Alice", 40))  # 25
print(person.setdefault("David", 40))  # 40
print(person)  # {'Alice': 25, 'Bob': 30, 'Charlie': 35, 'David': 40}

“Alice”は元々存在していたので、setdefault()メソッドはそのvalueである25を返し、辞書は変更されません。

一方、”David”は存在しなかったので、新たに”David”: 40というペアが辞書に追加され、そのvalueである40が返されます。

どの方法が適しているか

Pythonでdictのkeyの存在確認をする方法は、用途によって適した方法が異なります。

in演算子とget()メソッドの違いについて解説し、それぞれの適切な使用場面について見ていきましょう。

  • in演算子とget()メソッドの違い
  • どの確認方法を選ぶべきか

in演算子とget()メソッドの違い

in演算子とgetメソッドの違いを見ていきましょう。

違いを理解して、場面毎に使い分けられるようになってください。

  • in演算子:単純にkeyが存在するかどうかを確認し、存在しない場合には何もおこなわない
  • get()メソッド:keyが存在しない場合でもデフォルト値を返す
  • setdefault()メソッド:keyが存在しない場合にデフォルト値を辞書に追加する

どの確認方法を選ぶべきか

どの方法を選ぶべきかは、その後に行う処理によります。

  • keyが存在するかのみを確認したい場合、in演算子を使用する
  • keyが存在しない場合にも何らかの値を取得したい場合、get()メソッドを使う
    存在しないkeyに対するエラーを防ぐため、またはプログラムのフローを維持するために便利
  • keyが存在しない場合に新たな値を辞書に追加したい場合、setdefault()メソッドを使用
    データ構造を動的に拡張する場合などに有効

keyの存在確認を活用したプログラム例

これまで学んだkeyの存在確認の方法について、具体例を見ていきましょう。

具体的なプログラムに適用することで、その効果をより理解しやすくなります。

  • 単語の出現回数をカウントするプログラム
  • カテゴリ別にデータを集計するプログラム

単語の出現回数をカウントするプログラム

Pythonの辞書を利用して、テキスト中の各単語の出現回数をカウントできます。

その際に、get()メソッドやsetdefault()メソッドを利用すると、単語が初めて登場したときに辞書にその単語を追加する処理がスムーズになります。

以下がその一例です。

text = "apple banana apple strawberry banana lemon apple lemon"
word_count = {}
for word in text.split():
    word_count[word] = word_count.get(word, 0) + 1
print(word_count)

このコードでは、テキストを空白で分割し、各単語についてget()メソッドを使用してその単語の現在の出現回数を取得します。

単語が初めて登場する場合、get()メソッドはデフォルト値の0を返します。

カテゴリ別にデータを集計するプログラム

商品のリストがあり、それぞれにカテゴリが付けられているとします。

各カテゴリに何個の商品があるかをカウントしたい場合、Pythonの辞書とget()メソッドを利用すると簡単にできます。

以下にその例を示します。

items = [
    {"name": "apple", "category": "fruit"},
    {"name": "banana", "category": "fruit"},
    {"name": "lemon", "category": "fruit"},
    {"name": "lettuce", "category": "vegetable"},
    {"name": "cabbage", "category": "vegetable"},
]

category_count = {}
for item in items:
    category = item["category"]
    category_count[category] = category_count.get(category, 0) + 1
print(category_count)

このコードでは、各商品についてそのカテゴリを取得し、get()メソッドを使用してそのカテゴリの現在のカウントを取得します。

カテゴリが初めて登場する場合、get()メソッドはデフォルト値の0を返します。

まとめ

当記事では、Pythonの辞書におけるkeyの存在確認について詳しく解説しました。

  • in演算子
  • get()メソッド
  • setdefault()メソッド

辞書内の特定のkeyが存在するかどうかを確認し、その結果に基づいて異なる処理をおこなう方法です。

これらの技術はPythonプログラミングにおける非常に重要なスキルであり、日々のコーディング作業を大いに助けてくれるでしょう。

Pythonの辞書におけるkeyの存在確認は、エラーハンドリングやデータ処理の効率化に役立ちます。

適切な手法を選ぶことで、プログラムのロジックをシンプルに保つことが可能です。

タイトルとURLをコピーしました