如果数据存在,JSON将执行某些操作,如果数据不存在,则执行其他操作

我有一个JSON数据的API,该API具有〜600个条目,每个条目都包含有关对象的变化数据。在某些情况下,有一个关键数据值,在其他情况下则没有。我想检查该JSON数据是否存在并存储,以及是否没有移至下一个设备。


尝试对具有特定数据和不具有特定数据的条目进行排序:


if data["entity"][n]["sensor_data"]["light_ intensity"] in data["entity"]:

    logger.debug("There is light_intensity data on this devcie")

    light_ intensity = data["entity"][n]["sensor_data"]["light_ intensity"]

做这个的最好方式是什么?现在,我得到的KeyError是“ light_intensity”未定义-如果我手动查看数据并搜索一个确实有light_ intensity数据并以这种方式对其进行硬编码的实体。


light_ intensity = data["entity"][222]["sensor_data"]["light_intesity"]

logger.debug("Devcie 222 light_intesity: %s lums", light_intesity)

返回值:


Device 222 light_intensity: 88 lums

这告诉我,我可以从有数据购买实体的实体读取数据,而从没有数据购买实体的实体读取数据KeyError。我正在尝试进行某种意义上的搜索,以使我能够找到哪些设备的读数百分比较低,并使用该数据,并跳过当前未发送该数据的设备。


MM们
浏览 164回答 1
1回答

慕莱坞森

未定义“ light_intesity”的KeyError首先,您将强度拼写错误,如果那是一则字典列表,则值light_intensity不会是in data["entity"],但是强度只是一个数字。但是,如果您想遍历所有元素并且不确定它们是否存在,请使用dict.get(key, default)。for i, e in enumerate(data.get("entity", [])):    sensor_data = e.get("sensor_data", dict())    light_intensity = sensor_data.get("light_intensity", None)    logger.debug("Device %d ; light_intensity: %s lums", i, light_intensity)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python