Python の辞書に値があるかどうかをチェックする

Rayven Esplanada 2023年1月30日
  1. get() と Key を使用して、指定された値が辞書に値が存在するかどうかを確認する
  2. values() を使用して、指定された値が辞書に存在するかどうかを確認する
  3. 値がリストの場合に辞書に値が存在するかどうかをチェックする
Python の辞書に値があるかどうかをチェックする

このチュートリアルでは、値が Python 辞書内に存在するかどうかを確認する方法を示します。ここでは、キーで与えられた値を検索する、特定の値を検索する、オブジェクトやコレクションである値を検索するなど、関連する話題を取り上げます。

最初に、値が辞書に存在する場合は True を表示し、そうでない場合は False を表示します。

get() と Key を使用して、指定された値が辞書に値が存在するかどうかを確認する

Python の辞書には組み込み関数 key() があり、これは与えられたキーの値を返します。これは与えられたキーの値を返すと同時に、存在しなければ None を返します。この関数は辞書内に値が存在するかどうかを判断するための条件として使うことができます。

まず、int のキーと文字列の値を持つ単純な辞書を宣言しましょう。

simpDict = {1: "Ant", 2: "Bear", 3: "Cat", 4: "Dog", 5: "Elephant"}

キーのペアを使って値を探したい場合は、key() 関数を使用するのがよいでしょう。例えば、6 をキーとする値を検索したい場合、以下のコードに従ってください。

if simpDict.key(6) != None:
    print("True")
else:
    print("False")

関数 simpDict はキー6 を持たないので、このコードは False を出力します。

values() を使用して、指定された値が辞書に存在するかどうかを確認する

特定の値を探す場合とは異なり、辞書内のキーを探すのは非常に簡単です。

print(3 in simpDict)

これにより、キー3 が存在するので True が出力されます。この数字を存在しないキーに置き換えると、False が出力されます。

一方、辞書から特定の値を探したい場合は、関数 values() を用いることができます。values() コマンドは辞書内のすべての値のリストを返します。values() を使用すると、in キーワードを辞書と指定した値に利用することができます。例えば、値 Elephant が辞書に含まれているかどうかを知りたい場合は、以下のコードを実行します。

print("Elephant" in simpDict.values())

この行は、キー5 の simpDict に象という単語が存在するので、True を出力します。

Python 2.X では、values() と似たような関数として、itervalues()viewvalues() があります。

itervalues() および viewvalues() コマンドは、values() コマンドと同じタスクを実行します。ただし、実装が異なると、ごくわずかですが、実行時間に大きく影響します。

print("Elephant" in simpDict.itervalues())
print("Elephant" in simpDict.viewvalues())

どちらも values() 関数と同じ出力を返します。Python の新しいバージョンからこれらの関数が非推奨になった主な理由は、おそらく冗長性にあるということに注意することが重要です。

さて、辞書の値がリストやオブジェクトのようなデータ構造の場合はどうでしょうか?それを調べてみましょう。

値がリストの場合に辞書に値が存在するかどうかをチェックする

listDict = {1: ["a", "b"], 2: ["b", "c"], 3: ["c", "d"], 4: ["d", "e"]}

さて、int のキーと文字のリストを値として持つ辞書があります。

リスト ['c', 'd'] が辞書に存在するかどうかを検索したいとしよう。

print(["c", "d"] in listDict.values())

結果の出力は True です。これは、辞書の反復処理によるコレクションの比較も動作することを確認するものです。

しかし、リスト値の中の値が辞書に存在するかどうかを確認したい場合はどうすればよいでしょうか?これを解決するには、値をループさせて、辞書ではなくリストで in キーワードを使用します。

例えば、'e'という文字がこのリストの値の中に存在するかどうかを調べたいとします。そのために実行するコードを以下に示します。

tof = False
for value in listDict.values():
    if "e" in value:
        tof = True
        break
print(tof)

辞書に 'e' が存在するので、出力は True を出力します。

要約すると、関数 values() を用いて値を繰り返し処理し、探している値が値のリスト内に存在するかどうかを比較します。これは、指定した値が辞書に存在するかどうかを確認したい場合に役立ちます。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python Dictionary