python - 如何使用 python 访问/更改 JSON 值?
问题描述
我正在制作一个基本的物理计算器。我有一个包含这个的 json 文件。我正在尝试使用 Python 将 json 对象传输到 Python 字典,将“value”键的值更改为用户输入。这是我到目前为止所拥有的。
{"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")
解决方案
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
推荐阅读
- angular - 使用 Angular 路由器时防止通过 href="#" 重定向
- javascript - 使用 jQuery tableHTMLExport 插件将多个 html 表格导出为 PDF
- c# - 转换器事件之前的 UWP
- django - Django 模型:TypeError:元组索引必须是整数或切片,而不是 str
- window - i3 wm:在特定屏幕上启动我的应用程序并为其提供焦点并将鼠标移动到那里
- laravel - Auth::user() 未在 Laravel 路由组中定义
- git - 如何获取另一个远程存储库?
- php - 如何将 GROUP_BY 与查询生成器和 mySQL >= 5.7 一起使用?
- c# - MSBuild 未处理异常:除非设置了 UseShellExecute,否则 FileName 属性不应是目录
- docker - Grafana 配置通知通道不起作用