You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

条件解析JSON并筛选class_id为0的宽高值存入数组的实现问题

解决方案:筛选指定class_id的宽高并存入数组

问题1:仅筛选class_id为0的宽高值

只需要在遍历objects元素的循环中增加class_id等于0的判断条件即可,符合条件的才执行后续取值逻辑。

问题2:最优实现及存入空数组

两种常用实现方式效率差异极小,优先选符合你编码习惯、可读性高的即可:

方式1:常规循环写法(便于后续扩展额外处理逻辑)

import json

# 初始化空数组存储结果
dimensions = []

with open('/home/pan/output/result.json') as json_data:
    data = json.load(json_data)

for item in data:
    for row in item.get('objects', []):
        # 筛选class_id为0的对象
        if row['class_id'] == 0:
            w = row['relative_coordinates']['width']
            h = row['relative_coordinates']['height']
            # 可按需存为元组/列表/字典,这里以存元组为例
            dimensions.append((w, h))
            # 输出验证
            print(w, h)

运行后dimensions数组的结果为[(922, 1164)],可直接遍历用于后续计算。

方式2:列表推导式写法(代码更精简,适合无额外处理需求的场景)

import json

with open('/home/pan/output/result.json') as json_data:
    data = json.load(json_data)

# 一行完成筛选+取值+生成数组
dimensions = [
    (row['relative_coordinates']['width'], row['relative_coordinates']['height'])
    for item in data
    for row in item.get('objects', [])
    if row['class_id'] == 0
]

该写法执行效率和常规循环一致,代码更简洁。


内容的提问来源于stack exchange,提问作者Pan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:27:02