【问题标题】:How to extract data from json file in python如何从python中的json文件中提取数据
【发布时间】:2019-11-15 10:58:29
【问题描述】:

我在一个项目中有一个下面的 json 配置文件。

"Jackets": [
    {
        "GreenHSV": [30, 150, 72, 80, 255, 255]

    },
    {
        "OrangeHSV": [0, 150, 72, 25, 255, 255]

    }
]

我必须在 python 代码中获取 GreenHSV (30, 150, 72, 80, 255, 255)OrangeHSV 0, 150, 72, 25, 255, 255 的每个值,请记住,将来可以添加另一个 HSV,如下所示

{
    "RedHSV": [0, 150, 72, 25, 255, 255]

}

因此代码应该能够读取RedHSV 值,而无需对代码进行任何更改。在上面的 JSON 中,Jackets 基本上是一个包含dict of listlist(如果我没记错的话)。要获取每种颜色的 HSV 值,我的方法如下:

for i in range(len(config["Jackets"])):
    print(config["Jackets"][i])
    hsv_dict = config["Jackets"][i]
    print(hsv_dict.keys())
    name = hsv_dict.keys()
    hsv_color_name = hsv_dict[name]
    print(hsv_color_name[0], hsv_color_name[1], hsv_color_name[2])
    print(hsv_color_name[3], hsv_color_name[4], hsv_color_name[5])

我的方法是首先将forlenrangeJackets 放在一个for 循环中,这样如果将来添加新颜色,它将循环3 次。

之后我提取了包含此值{'GreenHSV': [30, 150, 72, 80, 255, 255]}hsv_dict。现在,虽然我应该得到字典的键名,因为它将是GreenHSV 或任何下一个颜色,这样我就可以提取它的值,这将是列表([30, 150, 72, 80, 255, 255]),然后我可以轻松获取列表值.但看起来我的方法是错误的。

谁能指导我。谢谢

【问题讨论】:

    标签: python json list dictionary


    【解决方案1】:
    hsv_dict = config["Jackets"][i]
    

    i 为0 时,将导致hsv_dict 包含{'GreenHSV': [30, 150, 72, 80, 255, 255]}

    您的代码中的问题是在name = hsv_dict.keys() 之后,name 包含一个dict_keys 对象,它将产生所有的键。

    您需要提取第一个密钥,这需要类似

    name = list(hsv_dict.keys())[0]
    

    我不确定您为什么要使用一个字典列表,但每个字典只有一个条目。我觉得下面的布局会更简单、更简洁:

    "Jackets":  {
        "GreenHSV": [30, 150, 72, 80, 255, 255],
        "OrangeHSV": [0, 150, 72, 25, 255, 255]
    }
    

    【讨论】:

      【解决方案2】:

      hsv_dict.keys() 返回一个dict_keys 对象,因此您应该将其转换为如下列表:

       list(hsv_dict.keys())
      

      由于这是一个列表,您可以像这样获得第 0 个参数:

      list(hsv_dict.keys())[0]
      

      这包含你的键值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-26
        • 2021-03-27
        • 1970-01-01
        • 2017-04-03
        • 2019-01-22
        • 1970-01-01
        相关资源
        最近更新 更多