gpt4 book ai didi

python - 如何访问从 JSON 数据树派生的可能存在的元素?

转载 作者:太空宇宙 更新时间:2023-11-03 15:23:13 24 4
gpt4 key购买 nike

我有一个相当复杂的数据结构,它是从 JSON 派生的 json.load(<filehandle>) ,例如

{
"sensors": {
"measurements": [
[
null,
null,
null
],
[
{
"sensor": "Fields 341",
"remote": null,
"mark": "reliable",
"duration": 81.54296875
},
{
"sensor": "Fields 341",
"remote": null,
"mark": "reliable",
"duration": 61.54534875
},
{
"sensor": "Fields 341",
"remote": null,
"mark": "reliable",
"duration": 61.89378945
}
]
]
}
}

结果是嵌套的字典和列表,例如

{u'sensors': {u'measurements': [[None, None, None],
[{u'duration': 81.54296875,
u'mark': u'reliable',
u'remote': None,
u'sensor': u'Fields 341'},
{u'duration': 61.545348750000002,
u'mark': u'reliable',
u'remote': None,
u'sensor': u'Fields 341'},
{u'duration': 61.89378945,
u'mark': u'reliable',
u'remote': None,
u'sensor': u'Fields 341'}]]}}

目标是通过 sqlalchemy 获取数据并将其填充到数据库中。像这样:

for item in sensors["measurements"]:
for j in range(len(sensors["measurements"])):
DBTable.DBField = item[j]["sensor"]
...

问题是:数据中的任何部分都可以用 null/None 替换以防测量出现错误(如第一个)。如果是这样,应该为 DBFields 分配 None .如果是这种情况,分配会引发异常:

TypeError: 'NoneType' object is unsubscriptable

有没有一种明智的方法可以让 for 循环在不引发异常的情况下运行(可能使用某种 .get() )?如果不是,处理这种不存在的数据结构的最佳方法是什么?

最佳答案

您可以使用您喜欢的默认值预先构造一个字典:

defaults = {"sensor": None, "remote": None", "mark": None, "duration": None }

然后你可以这样做:

DBTable.DBField = item.get(j, defaults)["sensor"]

您还可以为默认项使用 collections.defaultdict,这将允许您为访问的任何键提供默认值。

关于python - 如何访问从 JSON 数据树派生的可能存在的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11727371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com