Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの辞書(dict)に指定したキーが存在するかどうかを確認する方法

Pythonの辞書(dict)は、キーと値をペアとして保持するコンテナ型オブジェクトです。実際のプログラミングでは、「特定のキーがすでに辞書の中に存在するかどうか」を確認したい場面が頻繁にあります。例えば、重複したデータの上書きを防ぎたい場合や、条件分岐の前にデータの有無を調べたい場合などが挙げられます。

この記事では、辞書にキーが存在するかどうかを判定する代表的な2つの方法を、サンプルコードと実行結果とともにわかりやすく解説します。

方法1:in演算子を使う

最もシンプルで推奨される方法が、in演算子を使ったチェックです。キーが辞書に含まれていれば True、含まれていなければ False を返すため、if文と組み合わせて直感的に記述できます。

サンプルコード

Adict = {'Mon':3,'Tue':5,'Wed':6,'Thu':9}
print("The given dictionary : ", Adict)
check_key = "Fri"
if check_key in Adict:
    print(check_key, "is Present.")
else:
    print(check_key, "is not Present.")

実行結果

The given dictionary : {'Thu': 9, 'Wed': 6, 'Mon': 3, 'Tue': 5}
Fri is not Present.

この例では「Fri」というキーは辞書に存在しないため、「is not Present.」と出力されます。コードも簡潔で可読性が高く、パフォーマンスにも優れているため、通常はこの方法を使うのがベストプラクティスです。

方法2:dict.keys()メソッドを使う

dict.keys()メソッドは、辞書に含まれるすべてのキーを取得します。この戻り値に対してin演算子を適用することで、指定したキーが辞書に存在するかどうかを判定できます。

サンプルコード

Adict = {'Mon':3,'Tue':5,'Wed':6,'Thu':9}
print("The given dictionary : ", Adict)
check_key = "Wed"
if check_key in Adict.keys():
    print(check_key, "is Present.")
else:
    print(check_key, "is not Present.")

実行結果

The given dictionary : {'Thu': 9, 'Wed': 6, 'Mon': 3, 'Tue': 5}
Wed is Present.

この例では「Wed」というキーが辞書に存在するため、「is Present.」と出力されます。

補足:どちらの方法を選ぶべきか

実は、check_key in Adictcheck_key in Adict.keys() の動作結果は同じですが、前者の方が簡潔で高速です。Python 3では keys() がビューオブジェクトを返すため大きな差はありませんが、特別な理由がない限りは in 演算子を直接使うことが推奨されます。

また、キーが存在しない場合にデフォルト値を取得したい場合は、dict.get(キー, デフォルト値) メソッドを活用すると、エラーを発生させずに安全に処理できます。用途に応じてこれらの方法を使い分けるとよいでしょう。

  1. PythonのBST(二分探索木)に指定した合計になるトリプレットが存在するか判定する方法

    問題概要 整数値を持つ二分探索木(BST)と、ある数値「total」が与えられたとします。このとき、BSTの中から3つの要素を選び、その合計が「total」と一致するような組み合わせ(トリプレット)が存在するかどうかを判定するのが、本記事のテーマです。 例えば、次のようなBSTが入力として与えられた場合を考えてみます。 total = 12 の場合、出力は True になります。 解法のアプローチ この問題は、BSTを中順走査(inorder traversal)するとノードの値が昇順に並ぶという性質を利用することで、効率的に解くことができます。全体の流れは以下の通りです。 結果を格納する

  2. Pythonで与えられたグラフが2部グラフかどうかを判定するプログラム

    2部グラフとは無向グラフが与えられたとき、そのグラフが2部グラフ(バイパータイトグラフ)であるかどうかを判定する方法を解説します。2部グラフとは、グラフのすべての頂点を2つの集合 A と B に分割でき、グラフ内のすべての辺 {u, v} が必ず一方の端点 u が集合 A、もう一方の端点 v が集合 B に属するようなグラフのことです。つまり、同じ集合内の頂点同士を結ぶ辺(A-A や B-B)が一切存在しないグラフです。例として、次のようなグラフを考えてみましょう。この場合、頂点 [0, 4] を集合 A に、[1, 2, 3] を集合 B に分類できます。すべての辺は A から B、または