如何使用python访问/更改JSON值



我正在制作一个基本的物理计算器。我有一个json文件,其中包含this。我试图使用Python将json对象转移到Python字典中,更改";值";键输入到用户输入中。这是我迄今为止所拥有的。

{"velocity_dict":
{
"formula": "v=d/t",
"variables": "v,d,t", 
"velocity":
{"units":"m/s", "value": 0},
"time":
{"units": "s", "value": 0},
"distance":
{"units":"m", "value": 0}
}
}

这是Python。

import json

def velocity_formula():
with open('data.json') as data_file:
velocity = json.load(data_file)
for value in velocity.items():
print(value)
print("Enter the values for each variable. (? for unknown) ")
v=input('What is the velocity: ' )
t=input("What is the time: ")
d=input("What is the distance: ")



if (v == "?"):
v=float(d)/float(t)
velocity['velocity']["value"]=v
print("Velocity(v)=",v,velocity['velocity']["units"])

elif (t == "?"):
t=float(d)/float(v)
velocity['time']["value"]=t
print("Time(t)=",t, velocity['time']["units"])

elif (d=="?"):
d=float(v)*float(t)
velocity['distance']["value"]=d
print("Distance(d)=",d, velocity['distance']["units"])



else:
print("Try again")

只需添加"即可调用对象,因为字典中的键是字符串类型的键。如下:

velocity['velocity']["value"]=v
print("Velocity(v)=",v,velocity['velocity']["units"])

您导入JSON,即velocity,并要求字典velocity['velocity']["value"]替换值。现在,问题是velocity_dict,它也是一个密钥,但您没有提到从哪里获得值。看看下面的代码,希望你能明白要点。

dict_vel={"velocity_dict":
{
"formula": "v=d/t",
"variables": "v,d,t", 
"velocity":
{"units":"m/s", "value": 0},
"time":
{"units": "s", "value": 0},
"distance":
{"units":"m", "value": 0}
}
}
print("Enter the values for each variable. (? for unknown) ")
v=input('What is the velocity: ' )
t=input("What is the time: ")
d=input("What is the distance: ")

if (v == "?"):
v=float(d)/float(t)
dict_vel['velocity_dict']['velocity']["value"]=v
print("Velocity(v)=",v,dict_vel['velocity_dict']['velocity']["units"])

elif (t == "?"):
t=float(d)/float(v)
dict_vel['velocity_dict']['time']["value"]=t
print("Time(t)=",t, dict_vel['velocity_dict']['time']["units"])
elif (d=="?"):
d=float(v)*float(t)
dict_vel['velocity_dict']['distance']["value"]=d
print("Distance(d)=",d, dict_vel['velocity_dict']['distance']["units"])
else:
print("Try again")

输出

Enter the values for each variable. (? for unknown) 
What is the velocity: ?
What is the time: 10
What is the distance: 400
Velocity(v)= 40.0 m/s

最新更新