【发布时间】:2015-12-28 13:14:15
【问题描述】:
我使用 MongoDB 存储来自嵌入式设备的少量事件详细信息,并使用 Django 作为数据周围的 Web 应用程序包装器。 device_events 集合具有以下类型的记录:
{"key1": value1,
"key2": value2,
"key3": value3,
"key4" : {
"type" : "Point",
"coordinates" : [
87.55092545050022,
25.037010399709558
]
},
"key5": value5,
}
在同一个集合中,很少有记录可能属于另一种类型:
{"key9": value9,
"keyx": valuex,
"key3": value3,
"key4" : {
"type" : "Point",
"coordinates" : [
87.55092545050022,
25.037010399709558
]
},
"key5": value5,
}
当我查询集合中的所有记录时,我会得到所有字典的列表。我想使用 map-lambda 仅获取必填字段数据。
现在的问题是,一条记录存在的字段很少,很少有字段不存在。无论是否存在,我都需要在报告中显示该字段,如果键不存在,则可能显示为空/零。
我的地图功能是:
data ={
"data" : map(
lambda m: {
"id": m["key1"], "longitude": m["key4"]["coordinates"][0], "latitude": m["key4"]["coordinates"][1],"active_status" : m["keyx"]
},
all_devices
)
}
抛出,KeyError: 'id'。
我需要将它用于包含大量数据的报告,需要具有最小开销的高效解决方案。 [我的意思是在这种情况下检查列表中的每个字典的每个键并不是最佳解决方案。]
提前致谢!!
【问题讨论】:
-
您能否详细说明您的短语“一条记录存在的字段很少,因为很少有字段不存在。我需要在报告中显示该字段,无论是否存在,如果键不存在,则可能为空/零现在。”
-
你能举个真实的例子吗,我以简化的方式(我理解)尝试了你的代码,没有任何问题/错误。
-
嗨,key1 存在于第一个字典中,而它不存在于第二个字典中。当我也尝试为第二个字典映射 key1 时,它会抛出 KeyError。
-
如果你必须检查字典中是否存在键,那么我会使用完整的函数而不是内联函数,因为它很清楚。
-
您是否建议检查列表的每个字典中是否存在键?它在大量字典中是最优的吗?
标签: python django mongodb dictionary