有没有什么有效的方法可以在python中连接两个json文件

有没有什么有效的方法可以在python中连接两个json文件,python,json,Python,Json,我有两个结构相同的json文件。json条目不是嵌套的,而是以字符串作为键,以整数作为对应的值。我想将两个json文件连接并保存到一个json文件中。可能两个文件中都存在其中一些密钥。在这种情况下,我需要在新的json文件中添加这些值 我知道我可以做到以下几点 import json #both values have integer as the values a = json.loads(open('js1.json').read()) b = json.loads(open('js2.js

我有两个结构相同的json文件。json条目不是嵌套的,而是以字符串作为键,以整数作为对应的值。我想将两个json文件连接并保存到一个json文件中。可能两个文件中都存在其中一些密钥。在这种情况下,我需要在新的json文件中添加这些值

我知道我可以做到以下几点

import json
#both values have integer as the values
a = json.loads(open('js1.json').read())
b = json.loads(open('js2.json').read())
c = a.copy()
for item in b.keys():
  try:
    c[item] += b[item]
  except:
    c[item] = b[item]

f = open('newjs.json','w')
json.dumps(c,f)

在这里,我将两个json加载到单独的字典中,然后将它们写入anotehr字典。在内存和速度方面有没有其他有效的方法可以达到同样的效果?

只需合并两个dict,就可以了-

import json
a = json.loads(open('js1.json').read())
b = json.loads(open('js2.json').read())

def combine_dicts(*dicts):
    return reduce(lambda dict1, dict2: dict(zip(dict1.keys() + dict2.keys(), dict1.values() + dict2.values())), dicts)

c = combine_dicts(a, b)

只要把两个字典合并起来就行了-

import json
a = json.loads(open('js1.json').read())
b = json.loads(open('js2.json').read())

def combine_dicts(*dicts):
    return reduce(lambda dict1, dict2: dict(zip(dict1.keys() + dict2.keys(), dict1.values() + dict2.values())), dicts)

c = combine_dicts(a, b)

对于初学者来说,
c=a.copy()
而不是第一个循环。但是,既然以后的
a
是什么样子并不重要,那么为什么还要在这里麻烦复制一本呢?如何合并两本词典完全取决于它们的结构。是否有嵌套的词典或列表?同一个键、数字、布尔值的字符串值会发生什么变化?对于初学者来说,使用
c=a.copy()
代替第一个循环。但是,既然以后的
a
是什么样子并不重要,那么为什么还要在这里麻烦复制一本呢?如何合并两本词典完全取决于它们的结构。是否有嵌套的词典或列表?同一个键、数字、布尔值的字符串值会发生什么变化?在op的代码中,我认为{a:1,b:1}+{b:1,c:1}=={a:1,b:2,c:1}。您的解决方案将不起作用,因为dict(zip(…)将只保留每个公共键的最后一个值。在op的代码中,我认为{a:1,b:1}+{b:1,c:1}=={a:1,b:2,c:1}。您的解决方案将不起作用,因为dict(zip(…)将只保留每个公共键的最后一个值。