【问题标题】:Parsing json file to collect data and store in a list/array解析 json 文件以收集数据并存储在列表/数组中
【发布时间】:2019-07-02 00:32:44
【问题描述】:

我正在尝试构建 IOT 设置。我正在考虑使用 json 文件来存储设置的传感器和灯的状态。

我创建了一个函数来测试我的概念。这是我迄今为止为数据方面写的内容。

            {
                "sensor_data": [
                    {
                        "sensor_id": "302CEM/lion/light1",
                        "sensor_state": "on"
                    },
                    {
                        "sensor_id": "302CEM/lion/light2",
                        "sensor_state": "off"
                    }
                ]
            }

            def read_from_db():
                with open('datajson.json') as f:
                    data = json.load(f)

                for sensors in data['sensor_data']:
                    name = sensors['sensor_id']



            read_from_db()

我想要做的是将 sensor_id 解析为一个数组,以便我可以通过例如 sensor_name[0] 来访问它们。我不知道该怎么做。我尝试了 array.array 但它没有保存任何值,也尝试了 .append 但不是我预期的结果。有什么建议吗?

【问题讨论】:

    标签: python arrays json list


    【解决方案1】:

    如果我理解正确,您所要做的就是使用for 循环将所有这些传感器分配给names,然后返回结果:

    import json
    
    def read_from_db():
        with open('sensor_data.json') as f:
            data = json.load(f)
            names = [sensors['sensor_id'] for sensors in data['sensor_data']]
            return names
    
    sensor_names = read_from_db()
    for i in range(len(sensor_names)):
        print(sensor_names[i])
    

    这将打印:

    302CEM/lion/light1
    302CEM/lion/light2
    

    【讨论】:

    • 非常感谢您的作品,但我有一个问题。 names = [sensors['sensor_id'] for sensors in data['sensor_data']] 和 for sensors in data['sensor_data']: names = [[sensors['sensor_id']] 有什么区别
    • 第一个是list comprehension,这是Python的一个特性,可以让你使用单行创建列表。 names = [[sensors['sensor_id']] 不会创建所需的列表,因为您没有将新元素附加到该列表,并且您每次只分配要迭代的元素。应该是:names.append(sensors['sensor_id']).
    • 非常感谢这位朋友
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多