结合两个json字典python

jum*_*947 5 python json dictionary

我正在尝试合并两个json词典.到目前为止,我有一个带有内容的json文件(myjfile.json)

{"cars": 01, "houses": 02, "schools": 03, "stores": 04}
Run Code Online (Sandbox Code Playgroud)

我在python中有一个字典(mydict),如下所示:

{"Pens": 1, "Pencils": 2, "Paper": 3}
Run Code Online (Sandbox Code Playgroud)

当我把它们结合起来时,它们是两个不同的词典

with open('myfile.json' , 'a') as f:
  json.dump(mydict, f)
Run Code Online (Sandbox Code Playgroud)

请注意,因为我要保持文件的内容,并开始新的一行中其被写入时间的myfile.json,正被写入"A",并在代码A/N.

我希望最终结果看起来像

{"cars": 01, "houses": 02, "schools": 03, "stores": 04, "Pens": 1, "Pencils": 2, "Paper": 3}
Run Code Online (Sandbox Code Playgroud)

Ant*_*pov 12

IIUC你需要加入dicts,你可以用update:

a = {"cars": 1, "houses": 2, "schools": 3, "stores": 4}
b = {"Pens": 1, "Pencils": 2, "Paper": 3}

a.update(b)
print(a)
Run Code Online (Sandbox Code Playgroud)

输出看起来像:

{'Paper': 3, 'cars': 1, 'Pens': 1, 'stores': 4, 'Pencils': 2, 'schools': 3, 'houses': 2}
Run Code Online (Sandbox Code Playgroud)

要创建全新的dict无触摸,a您可以:

out = dict(list(a.items()) + list(b.items()))

print(out)
{'Paper': 3, 'cars': 1, 'Pens': 1, 'stores': 4, 'Pencils': 2, 'schools': 3, 'houses': 2}
Run Code Online (Sandbox Code Playgroud)

编辑

对于你的情况你可以加载你jsonjson.load更新它,然后保存它json.dump:

mydict = {"Pens": 1, "Pencils": 2, "Paper": 3}
with open('myfile.json' , 'r+') as f:
   d = json.load(f)
   d.update(mydict)
   f.seek(0)
   json.dump(d, f)
Run Code Online (Sandbox Code Playgroud)