首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从复杂的JSON中提取数据

从复杂的JSON中提取数据
EN

Stack Overflow用户
提问于 2020-12-01 23:37:03
回答 1查看 20关注 0票数 0

This is the JSON data I am using

在这个数据集中,我想提取“yaw值”并将其存储到camera_loc中。我对代码的第一次尝试如下:

代码语言:javascript
复制
with open(
        "/home/siddhant/catkin_ws/src/view-adaptation/multi_sensors.json"
    ) as sensors:
        multi_sensors = json.load(sensors)
    camera_loc = [
        multi_sensors["sensors"][0]["yaw"],
        multi_sensors["sensors"][1]["yaw"],
        multi_sensors["sensors"][2]["yaw"],
        multi_sensors["sensors"][3]["yaw"],
        multi_sensors["sensors"][4]["yaw"],
        multi_sensors["sensors"][5]["yaw"],
    ]

这给了我预期的结果。但我想将其推广到“传感器”数组中的任意数量的条目。我尝试执行一个' for‘循环,并提取相同的值,如下所示:

代码语言:javascript
复制
for i in multi_sensors["sensors"]:
            camera_loc = []
            camera_loc.append(i["yaw"])

然而,这个方法只给出了camera_loc列表中的一个值,它是JSON文件中的最后一个‘yaw值’。我正在寻找一种更好的方法,甚至是对我执行循环的方式的任何修改,这样我就可以从JSON文件中提取‘yaw值’的所有值-在这个例子中有6个条目,但我想将其推广到可能在其他情况下创建的'n‘条目。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-12-01 23:45:19

这是因为您在循环中定义了camera_loc数组,这意味着每次迭代都会将其重置为[]。如果在循环之外只定义了一次数组,则此代码应该可以工作:

代码语言:javascript
复制
camera_loc = []
for i in multi_sensors["sensors"]:
    camera_loc.append(i["yaw"])

这也是List Comprehension的一个完美用例

代码语言:javascript
复制
camera_loc = [i["yaw"] for i in multi_sensors["sensors"]]

两个答案的结果是相同的数组,所以你可以选择你最喜欢的那个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65093585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档