Python 如果数据存在,JSON会做一些事情,如果数据不存在,JSON会做一些其他事情;T

Python 如果数据存在,JSON会做一些事情,如果数据不存在,JSON会做一些其他事情;T,python,json,sorting,Python,Json,Sorting,我有一个JSON数据的API,它有大约600个条目,每个条目都包含关于对象的变化数据。在某些情况下,有一个关键数据值,而在另一些情况下,则没有。我想检查JSON数据是否存在并存储它,以及它是否没有移动到下一个设备 尝试对包含特定数据的条目和不包含特定数据的条目进行排序: if data["entity"][n]["sensor_data"]["light_ intensity"] in data["entity"]: logger.debug("There is light_intens

我有一个JSON数据的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\uuuuuuuuuuuuuu强度
数据的实体,然后像这样硬编码它

light_ intensity = data["entity"][222]["sensor_data"]["light_intesity"]
logger.debug("Devcie 222 light_intesity: %s lums", light_intesity)
返回:

设备222光照强度:88 lums
这告诉我,我可以从有数据购买的实体中读取数据,从没有数据购买的实体中获取
KeyError
。我正在尝试创建一个搜索,从某种意义上说,它允许我找到哪些设备具有光读数百分比,并使用该数据,跳过当前未发送该数据的设备

未定义“亮度”的关键错误

首先,如果数据[“实体”]是一个dict列表,那么强度拼写错误,
亮度
的值将不会是
,但强度只是一个数字

但是,如果要循环所有元素,并且不确定它们是否存在,请使用
dict.get(key,default)


你能举一个例子说明数据中的
数据[“实体”][n][“传感器数据”][“光强度”]在数据中[“实体”]
是真的吗?
如果数据中的“光强度”[“传感器数据”]:#键存在
要真正帮助你,我们需要查看正在解析的JSON数据示例(有和没有相关数据)。请回答您的问题并添加该信息。此外,问题可能与您拼写错误“light\u intensity”(似乎应该是“light\u intensity”)有关。我喜欢您使用另一个dict作为返回值
e.get(“sensor\u data”,dict())
,这样您就不必进行任何错误检查。从来没有想过要这么做。谢谢你和我的拼写错误,我在问题中纠正了它。我查了
dict.get(key,default)
,它确实解决了我的问题,python有很多预构建的函数。
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)