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)
コメント