为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MM们 2021-04-06 17:14:27
我有一个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)


查看完整回答
反对 回复 2021-04-20
  • 1 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信