您应该如何使用 python 更新本身就是值的键的 JSON 值
How should do you update JSON values of keys which are themselves values, with python
我有 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,而是在末尾添加了一个值为 10 的新“test3”键并保留旧键一个完好无损。我也试过让程序只打印出“test”中任何键的值,但它没有这样做,唯一有效的方法要么打印出“test”本身的值,要么打印出“test5”领先的值我相信他们的位置是什么搞砸了。对此的任何解决方案将不胜感激,如果您好奇,我无法将 JSON 文件更改为更整洁的解决方案,因为我正在使用它来处理 JSON 中的文件视频游戏 Minecraft 和我担心弄乱现有结构会干扰游戏设计读取其文件的方式。
您正在访问嵌套字典的根目录,但其中没有“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"
}
我有 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,而是在末尾添加了一个值为 10 的新“test3”键并保留旧键一个完好无损。我也试过让程序只打印出“test”中任何键的值,但它没有这样做,唯一有效的方法要么打印出“test”本身的值,要么打印出“test5”领先的值我相信他们的位置是什么搞砸了。对此的任何解决方案将不胜感激,如果您好奇,我无法将 JSON 文件更改为更整洁的解决方案,因为我正在使用它来处理 JSON 中的文件视频游戏 Minecraft 和我担心弄乱现有结构会干扰游戏设计读取其文件的方式。
您正在访问嵌套字典的根目录,但其中没有“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"
}