我有一个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。我正在尝试进行某种意义上的搜索,以使我能够找到哪些设备的读数百分比较低,并使用该数据,并跳过当前未发送该数据的设备。
1 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
未定义“ 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)
添加回答
举报
0/150
提交
取消