Python解析JSON数据:筛选持仓量大于0.01的持仓项及循环取值方法
核心问题修正
遍历访问失效的根因
- 当前对接的交易所SDK中,
client.futures_position_information()接口返回值本身就是完成JSON解析的Python列表/字典结构,完全不需要再调用json.loads()做二次解析。 - 对非字符串类型的返回值执行
json.loads()会直接触发类型错误,导致循环流程中断,根本没法正常访问列表里的字典元素。
有效持仓筛选的实现要点
- 接口返回的
positionAmt字段是字符串格式的数值,必须先转成浮点型再和0.01的阈值做对比,直接拿字符串和数值比较会出现逻辑错误。
可直接运行的修正代码
def open_positions(): # 删掉多余的json.loads解析步骤,直接用SDK返回的结构化数据 positions = client.futures_position_information() filtered_positions = [] for pos in positions: # 把字符串格式的持仓量转成数值,筛掉持仓量≤0.01的无效条目 if float(pos['positionAmt']) > 0.01: filtered_positions.append(pos) # 正常读取字典里的交易对字段 print(pos['symbol']) return filtered_positions
运行效果说明
- 修正解析步骤后,循环可以正常遍历包含字典元素的持仓列表,通过字典键名就能访问所有接口返回的字段,不会再出现访问报错。
- 筛选逻辑会自动过滤掉持仓量为0、持仓量不足0.01的无效条目,最终仅返回符合阈值要求的有效持仓列表。
内容的提问来源于stack exchange,提问作者johnvayne
相关产品推荐
相关产品推荐

