2017-08-03 17 views
0

私は現在、しかし、私はパスteacher_obj["medication"]["topical"]が存在することを確認したいことをやって、私はこれを達成する簡単な方法を探しています前に、私のJSONオブジェクトjsonオブジェクトのパスが存在するかどうかを確認しますか?

teacher_topical_array = teacher_obj["medication"]["topical"] 

の配列にアクセスするには、このような何かをしています。

今、私は私は私が別の方法で上記を達成することができれば知りたいと思ったこの

if "medication" in teacher_obj: 
    if "topical" in teacher_obj["medication"]: 
      #yes the key exists 

ような何かを行うことができます理解しています。チェーンget呼び出し、あなたがtry-except中括弧を使用しない場合は...

teacher_topical_array = teacher_obj.get("medication", {}).get("topical", None) 

:私はLYBL​​アプローチ
teacher_obj["medication"]["topical"]["anotherkey"]["someOtherKey"] 
+0

あなたは 'てみ例外処理を使用することができます。teacher_obj [ "薬"] [ "局所"] KeyError例外を除き、[ "anotherkey"] [ "someOtherKeyを"]:...'。 – DyZ

+0

@SnakesandCoffee Woahリンクされたdupeも私と同様の答えを持っています。 –

答えて

1

のようなものをチェックしなければならなかった場合には、より効果的かもしれません

EAFPアプローチ:try - exceptブロックを使用し、KeyErrorをキャッチします。

try: 
    teacher_topical_array = teacher_obj["medication"]["topical"] 
except KeyError: 
    teacher_topical_array = [] 
+0

私はLYBL​​のアプローチがそのように行くのが好きです –

+0

@JamesFranco確かに。それが機能する場合は、受け入れ可能な印を付けてください。 –

関連する問題