辞書から取得しようとしている要素がある場合: my_dict[i]['level_1']['level_2']['my_var']
。Pythonの辞書要素のクリーンテストはありますか?
nullをチェックするよりもクリーンな方法がありますか?
def get_deep(dic,*keys,default=None):
for key in keys:
if isinstance(dic,dict) and key in dic:
dic = dic[key]
else:
return default
return dic
それとも、テストしたい場合は::
def in_deep(dic,*keys):
for key in keys:
if isinstance(dic,dict) and key in dic:
dic = dic[key]
else:
return False
return True
あなたはin_deep(my_dict[i],'level1','level2','my_var')
でこのコードを使用することができますし、それができるならば、それはTrue
を返しますあなたは単にあなた自身を定義することができ
if 'level_1' in my_dict[i]:
if 'level_2' in my_dict[i]['level_1']:
if 'my_var' in my_dict[i]['level_1']['level_2']:
my_var = my_dict[i]['level_1']['level_2']['my_var']
'dict.get' - ' my_dict [i] .get( 'level_1'、{})を使うことができます。get( 'level_2'、{ })。get( 'my_var') '。見つからなければ 'None'となります。 – jonrsharpe
または 'try-except KeyError'ブロック –
あなたのアプローチは、あなたが達成しようとしていることとあなたが望む動作に完全に依存します。 try-except'でラップされた簡単な 'my_var = my_dict [i] ['level_1'] ['level_2'] ['my_var']'は、あなたの性質に応じてjonsharpeが提案するもの、データ。 –