我试图合并“n”个JSON文件,但我需要首先从filepath加载JSON,然后使用它。我提到下面的链接,但他们已经有可用的JSON数据,但在我的情况下,我想先加载JSON数据循环,然后合并它。我正在寻找一种通用的方法来做这件事。
How do I merge a list of dicts into a single dict?
我的代码:我想首先加载所有文件的json数据,然后合并它。我正在尝试类似下面的东西,但它不工作,并给予error as TypeError: str , bytes or ospath.like object, not Tuple
def merge_JsonFiles(*file):
result = {}
for f in file:
json_data = loadjson(file)
result = {**json_data}
return result
merge_JsonFiles(file1, file2, file3)
def loadjson(file)
with open(file , 'r') as fh:
return json.load(fh)
Merge logic for two files = {**file1, **file2)
字符串
3条答案
按热度按时间2nc8po8w1#
我用下面的代码解决了这个问题
字符串
cnwbcb6i2#
字符串
在这段代码中,
merge_JsonFiles
函数接受任意数量的文件路径作为参数。然后使用loadjson函数逐个加载每个JSON文件,并将它们合并到一个字典中。最后,返回合并后的字典。fdx2calv3#
看起来你的代码有一些问题。让我们来看看它们,并提供一个
merge_JsonFiles
函数的修正版本:loadjson
函数在其定义的末尾缺少冒号(:)。merge_JsonFiles
函数未正确使用loadjson
函数。您应该将文件路径(f
)传递给loadjson
函数,而不是传递所有文件的元组(file
)。1.合并逻辑不正确。您应该使用每个加载的JSON数据更新
result
字典,而不是重复覆盖result
字典。以下是代码的更正版本:
字符串
在这个修正后的版本中,
merge_JsonFiles
函数现在采用可变数量的文件路径(*files
)并迭代每个文件。它使用loadjson
函数从每个文件加载JSON数据,然后使用update()
方法使用加载的JSON数据更新result
字典。这样,所有文件中的数据将合并到一个字典中。