2016-08-15 10 views
0

存在しない場合ガード、ファイルにJSONオブジェクトを追加次のように配列を追加:Pythonはオブジェクトが私はこの形状は</p> <pre><code>"additional_info": {"other_names": ["12.13"] </code></pre> <p>され、Iはパイソンを使用してJSONファイルの読み込み、および、オブジェクト内の配列に付加してい

data["additional_info"]["other_names"].append('13.9') 
with open('jsonfile', 'w') as f: 
    json.dump(data, f) 

は、私がADDITIONAL_INFOとother_namesはJSONファイルに存在し、それがその後ない場合、それを作成するかどうかを確認するためにガードを設定したいです。これをどうやってやりますか?

+0

「私はGUAを設定したいですrdを実行してjsonファイルにadditional_infoとother_namesが存在するかどうかをチェックし、それが作成されない場合は "これは既にデフォルトの動作です。それがすでに存在する場合、リストに追加したくないということですか? – DeepSpace

+0

additional_infoやother_namesを持たないファイルでこれを実行しようとすると、私はキーエラーを受け取ります –

答えて

1

通常、私は、各不足しているキーまたはdefaultdictを確認するためにtry-exceptを入れ子に使用しますが、この場合には、私は、簡単のため2つのif文で行くと思う:

if "additional_info" not in data: 
    data["additional_info"] = {} 
if "other_names" not in data["additional_info"]: 
    data["additional_info"]["other_names"] = [] 

data["additional_info"]["other_names"].append('13.9') 

with open('jsonfile', 'w') as f: 
    json.dump(data, f) 

2つの使用例:

data = {} 

if "additional_info" not in data: 
    data["additional_info"] = {} 
if "other_names" not in data["additional_info"]: 
    data["additional_info"]["other_names"] = [] 

data["additional_info"]["other_names"].append('13.9') 

print(data) 
>> {'additional_info': {'other_names': ['13.9']}} 

そして

data = {"additional_info": {"other_names": ["12.13"]}} 

if "additional_info" not in data: 
    data["additional_info"] = {} 
if "other_names" not in data["additional_info"]: 
    data["additional_info"]["other_names"] = [] 

data["additional_info"]["other_names"].append('13.9') 

print(data) 
>> {'additional_info': {'other_names': ['12.13', '13.9']}} 
+0

これは私のために、ありがとう! –

関連する問題

 関連する問題