条件解析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
相关产品推荐
相关产品推荐

