Python 如果数据存在,JSON会做一些事情,如果数据不存在,JSON会做一些其他事情;T
我有一个JSON数据的API,它有大约600个条目,每个条目都包含关于对象的变化数据。在某些情况下,有一个关键数据值,而在另一些情况下,则没有。我想检查JSON数据是否存在并存储它,以及它是否没有移动到下一个设备 尝试对包含特定数据的条目和不包含特定数据的条目进行排序: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
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)