【Python】キーが存在するかチェックするには?ネストされているキーの存在チェックは?

Python

Pythonにて、配列(dict)のキーが存在するかチェックする方法を紹介します。

スポンサーリンク

親要素のキーの存在を確認する

通常はinを使用した方法が用いられます。

"Key" in dictでキーが存在すればTrue、しなければFalseが返ります。

data={"key1":"value1","key2":"value2","key3":"value3"}
print("key1" in data)
>> True
スポンサーリンク

子要素のキーが存在するかチェックしたいとき

では、子要素の場合はどうでしょうか。

data={"key1":{"key1-1":"value1"},"key2":"value2","key3":"value3"}
→key1-1が存在するかチェックしたい!

子要素のキーが存在するかチェックしたい場合は、try…except構文を使用するのが便利です。

try:
    data["key1"]["key1-1"]
except KeyError:
    pass

存在しないキーの値を取得しようとするとKeyErrorが発生するのを利用し、上記のようにすることで、子要素のキーの存在確認をすることができます。

キーが存在しない要素を取り除くには?

try…except構文を活用すれば、特定のキーが存在しない要素を削除したりすることも可能です。

# キー「key1.key1-1」が存在するもののみ抽出するサンプル
# もとのデータ
data={
["key1":{"key1-1":"value1"},"key2":"value2","key3":"value3"],
["key1":"value1","key2":"value2","key3":"value3"],
["key1":{"key1-2":"value1-2"},"key2":"value2","key3":"value3"],
}

# フィルター後
filterd={}

# 各要素について処理
for i in range(0,len(data)):
    try:
        x=data[i]["key1"]["key1-1"] #取得できなければ(キーがなければ)例外となる

        filterd.append(data[i]) #取得できればfilterdに要素を追加する
    except KeyError:
        pass #例外が起こったら飛ばす
# 抽出後のデータを表示する
print(filterd)

コメント

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