应该如何使用python更新键的JSON值,这些值本身就是值


我有两个文件,一个是test.json,另一个是我的test.py我的目标是要有价值的关键";test3";更新,而不是等于3(就像下面显示的那样(,更新并变成10。

这是test.json

{
"test": {
"test2" : 3,
"test3" : 5,
"test4" : [1,2,3]
},
"test5" : "hello"
}

这是test.py

import json
with open('test.json','r') as t:
data = json.load(t)
data["test3"] = 10
with open ('test.json','w') as t:
json.dump(data,t)

运行后,我期望的输出是:

{
"test": {
"test2" : 3,
"test3" : 10,
"test4" : [1,2,3]
},
"test5" : "hello"
}

注意";test3";值变为10,但实际上,我的输出变为:

{"test": {"test2": 3, "test3": 5, "test4": [1, 2, 3]}, "test5": "hello", "test3": 10}

压痕不是问题,而是事实,它不是改变";test3";从5到10;test3";键,最后值为10,并保留旧的。我还试着要求程序只打印出"0"中任何键的值;测试";并且它没有这样做,并且唯一有效的是打印出"0"的值;测试";其本身或";test5";这让我相信他们的位置是把事情搞砸的原因。任何解决方案都将不胜感激,如果你好奇的话,我无法将JSON文件更改为更整洁的解决方案,因为我正在使用它来处理视频游戏《我的世界》中的JSON文件,我担心破坏预先存在的结构会干扰游戏读取文件的方式。

您访问嵌套doctionary的根,并且没有"test3";在那里。。从您想要的输出中,我看到您应该首先访问存储在";测试";然后改变它。。。


import json
with open('test.json','r') as t:
data = json.load(t)
data["test"]["test3"] = 10
with open ('test.json','w') as t:
json.dump(data,t)
data
>>>  {
"test": {
"test2" : 3,
"test3" : 10,
"test4" : [1,2,3]
},
"test5" : "hello"
}

相关内容

  • 没有找到相关文章

最新更新