首页 > 解决方案 > 如何使用 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")

标签: pythonjsondictionary

解决方案


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

推荐阅读