gpt4 book ai didi

python - 如何在 for 循环中将 dict 附加到 json 文件?

转载 作者:行者123 更新时间:2023-11-28 21:31:32 25 4
gpt4 key购买 nike

我正在根据图像制作一个 json 文件,在该 json 文件中,它需要图片中所有面板的信息。因为面板数量总是不同,所以我需要将面板信息附加到 for 循环内的 json 中,其中包含图片中面板数量的范围,但当我这样做时,它只显示 json 文件中的最后一个附加。

现在我正在使用 2 个字典,1 个用于始终需要的基本 json 布局,另一个在面板的 for 循环中。我在 for 循环中使用 dict.update(paneldict) ,但这会在每个周期覆盖自身


appDict = {
'type': 'setOfInformationpoints',
'version': '0.1',
'informationpoints': [{
'key': 'worktop01',
'datatype': 'productmodel:worktop',
'value': {
'type': 'productmodel',
'version': '1.2',
'globalmeasurments':{
'distx': 2777,
'disty': 1900,
'distz': 60
},

"panels": [{

}]
}
}]
}

def makepanel(index):
panel = {"id": "panel{}".format(index),
"measurements": {
"distx": 2177,
"disty": 600,
"distz": 60
},
"orientation": "north",
"position": {
"x":0,
"y":0
}
}
return panel

for panels in range(2):

panel = makepanel(panels)
panel1 = panel.copy()
appDict.update(panel)
print(panels)
with open('data.json', 'w', encoding='utf-8') as outfile:
json.dump(appDict, outfile, ensure_ascii=False, indent=4)

在本例中,我有一个范围为 2 的 for 循环,因此我的 json 中应该有 2 个面板:panel0 和 panel1,但实际输出是这样的

{
"type": "setOfInformationpoints",
"version": "0.1",
"informationpoints": [
{
"key": "worktop01",
"datatype": "productmodel:worktop",
"value": {
"type": "productmodel",
"version": "1.2",
"globalmeasurments": {
"distx": 2777,
"disty": 1900,
"distz": 60
},
"panels": [
{}
]
}
}
],
"id": "panel1",
"measurements": {
"distx": 2177,
"disty": 600,
"distz": 60
},
"orientation": "north",
"position": {
"x": 0,
"y": 0
}
}

我希望它是这样的:

{
"type": "setOfInformationpoints",
"version": "0.1",
"informationpoints": [
{
"key": "worktop01",
"datatype": "productmodel:worktop",
"value": {
"type": "productmodel",
"version": "1.2",
"globalmeasurments": {
"distx": 2777,
"disty": 1900,
"distz": 60
},
"panels": [
{}
]
}
}
],
"id": "panel0",
"measurements": {
"distx": 2177,
"disty": 600,
"distz": 60
},
"orientation": "north",
"position": {
"x": 0,
"y": 0
}
},
"id": "panel1",
"measurements": {
"distx": 2177,
"disty": 600,
"distz": 60
},
"orientation": "north",
"position": {
"x": 0,
"y": 0
}
}

不要介意极其糟糕的缩进,直到我让它工作为止。

最佳答案

如果您想保留许多面板,那么您必须将它们保留在列表中

  [ {"id": "panel0", ... }, {"id": "panel1", ...} ]

或对每个面板使用 uniqe 键。 id 中的值可能是键 - "panel0""panel1" 等。

  { "panel0":{"id": "panel0", ... }, "panel1":{"id": "panel1", ...} ]

关于python - 如何在 for 循环中将 dict 附加到 json 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58024084/

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