我有2个文件,一个是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,而完整保留了旧的键。我也曾尝试让程序仅打印出“ test”中任何键的值,但这样做没有成功,唯一可行的方法是打印出“ test”本身或“ test5”的值我相信他们的位置就是搞砸了。任何对此的解决方案将不胜感激,万一您好奇,我无法将JSON文件更改为更整洁的解决方案,因为我正在将其用于视频游戏《我的世界》中的JSON文件,并且我担心弄乱先前存在的结构会干扰游戏设计为读取其文件的方式。
您访问嵌套的字典的根,并且那里没有“ test3” ..从所需的输出中,我看到您应该首先访问存储在“ test”下的内部字典,然后对其进行更改...
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"
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句