1. ホーム
  2. python

[解決済み] どのように**kwargsのキーが存在するかどうかを確認する?

2022-06-02 13:09:59

質問

Python 3.2.3です。いくつかのアイディアがありました ここに記載されている は通常のvarで動作しますが、**kwargsは異なるルールで動作するようです...ではなぜこれが動作しないのか、そして**kwargsのキーが存在するかどうかを確認するにはどうしたらよいでしょうか?

if kwargs['errormessage']:
    print("It exists")

これもうまくいくはずだと思うのですが、うまくいきません --。

if errormessage in kwargs:
    print("yeah it's here")

kwargsはイテラブルだからでしょうか?特定のキーがあるかどうかを確認するために、それを繰り返し実行しなければならないのでしょうか?

どのように解決するのですか?

あなたは

if 'errormessage' in kwargs:
    print("found it")

の値を取得するために errormessage

if 'errormessage' in kwargs:
    print("errormessage equals " + kwargs.get("errormessage"))

このように kwargs は単に別の dict . 最初の例では if kwargs['errormessage'] は、kwargs のキー "errormessage" に関連付けられた値を取得し、その bool 値をチェックすることを意味します。 ですから、もしそのようなキーがない場合は KeyError .

2つ目の例です。 if errormessage in kwargs: は、「もし kwargs が " で指定された要素を含んでいる場合。 errormessage で指定された要素が含まれ、かつ、" errormessage "が変数名である場合は NameError .

辞書にもメソッドがあることを述べておきます。 .get() というメソッドがあり、デフォルトのパラメータを受け取ります(デフォルトは None になります)、つまり kwargs.get("errormessage") はそのキーが存在すればその値を返し None を返します(同様に kwargs.get("errormessage", 17) はあなたが考えているようなことをします)。 キーが存在するかしないかの違いを気にしない場合は None を値として持つか、キーが存在しないかの違いを気にしない場合、これは便利です。