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

Python深层嵌套字典列表结构层级访问索引报错排查

报错原因

你的报错核心是对返回结构的层级类型判断错误:

  • 接口返回值最外层是字典,其中result键对应的值是列表,不是字典,因此无法直接用'entry_price'这类字符串key做索引,这就是第一次写法触发TypeError: list indices must be integers or slices, not str的原因。
  • 你后续尝试的写法存在两个错误:
    • Python列表索引从0开始计数,本次返回的result列表仅包含2个元素(分别对应多仓、空仓),有效索引只有0和1,写[2]会触发索引越界
    • result列表内的每个元素本身是字典,不是嵌套列表,因此在整数索引后再加[0]/[2]这类数字索引,相当于给字典传不存在的数字key,自然无法取到目标值。
正确访问方案

先明确返回结构的层级逻辑:

  1. 最外层字典 → 通过'result'键取到持仓列表
  2. 持仓列表 → 用整数索引取单个持仓字典:索引0对应side为Buy的多仓,索引1对应side为Sell的空仓
  3. 单个持仓字典 → 用字段名作为key即可取到对应数值

基础索引写法

直接按固定索引取值即可:

resp = session.my_position(symbol="BTCUSDT")
# 取多仓入场价
long_entry_price = resp['result'][0]['entry_price']
# 取空仓入场价
short_entry_price = resp['result'][1]['entry_price']

更稳妥的遍历写法

如果担心后续接口返回的持仓顺序变动,可以通过遍历+字段匹配的方式取值,兼容性更强:

resp = session.my_position(symbol="BTCUSDT")
long_entry_price = None
short_entry_price = None
for position in resp['result']:
    if position['side'] == 'Buy':
        long_entry_price = position['entry_price']
    elif position['side'] == 'Sell':
        short_entry_price = position['entry_price']
嵌套结构排查技巧

后续遇到同类嵌套结构取值问题时,可以通过打印类型和长度的方式快速理清层级,避免猜结构:

resp = session.my_position(symbol="BTCUSDT")
# 打印result的类型,确认是列表还是字典
print(type(resp['result']))
# 打印列表长度,确认有效索引范围
print(len(resp['result']))
# 打印列表首个元素的类型,确认下一层级的索引方式
print(type(resp['result'][0]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:57:18