gpt4 book ai didi

python - 通过python(或其他一些简单的脚本语言)中的键合并json文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:18 24 4
gpt4 key购买 nike

我想将多个 json 文件合并到一个对象或文件中。一个示例 JSON 对象可以是

{
"food": {
"ingredents": [

"one": "this",
"two": "that",

]

}
}

"food": {
"amount": [

"tablespoons": "3",

]
}
}

我希望能够合并这些以便我们得到

"food": {
"ingredents": [

"one": "this",
"two": "that",

],
"amount": [

"tablespoons": "3",

]
}

}

这样它们都通过父键组合在一起,而不是仅仅作为一个列表,其中“食物”会重复出现。此外,我希望传出文件替换任何重复的内容,例如如果成分“一个”:“这个”存在于其他地方它只会出现一次。

如有任何帮助,我们将不胜感激。具体来说,遍历 JSON 文件列表并应用该方法的方法将是理想的。

我尝试过使用 glob 并遍历 JSON 文件比如

ar = []
for f in glob.glob("*.json"):
with open(f, "rb") as filename:
ar.append(json.load(filename))

with open("outfile.json", "w") as outfile:
json.dump(ar, outfile)

然而,这只是给了我一个 JSON 对象列表,而没有按键连接它们。

我可能会编写一个解决方案,它收集键数据并使用条件来确定将对象放置在特定键内的位置,但这需要做更多的工作,尤其是因为我要处理大量文件。如果有一个更简单的解决方案,那将是惊人的。

最佳答案

不确定您尝试过哪些库,但您说这些库无法正常满足您的需求,但我会推荐 lodash。它是一个非常快速、小巧、强大的库来处理这些类型的操作。对于这种特定情况,您可以使用 lodash merge https://lodash.com/docs#merge 轻松完成它

例子:

var users = {
'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
};

var ages = {
'data': [{ 'age': 36 }, { 'age': 40 }]
};

_.merge(users, ages);
// → { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }

关于python - 通过python(或其他一些简单的脚本语言)中的键合并json文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32144740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com