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

Python len函数在if语句外正常执行但分支内不生效问题咨询

问题排查与解决方案

核心错误点

你代码的问题出在if判断逻辑完全不符合你提供的JSON结构:

  • info['resources'][i]['addresses']是字典组成的列表,不是单个字典
  • 你写的'ip' in info['resources'][i]['addresses']含义是「判断列表中是否存在值为字符串ip的元素」,并不是「判断列表内的字典是否包含ip键」,这个判断逻辑本身就是错误的。

你提到if语句已成功触发,大概率是测试数据异常,或者你对if分支触发的判断有误(比如误加调试日志误以为进入了分支),Python内置的len函数本身不会出现「同一参数外部调用正常、if分支内调用无效」的问题。

正确代码参考

你不需要提前调用len获取长度做索引遍历,直接遍历addresses列表即可,代码可简化为:

# 遍历当前resource下的所有地址条目
for addr_item in info['resources'][i]['addresses']:
    # 仅当前条目存在ip键时才取值
    if 'ip' in addr_item:
        ip.append(addr_item['ip'])

如果需要保留索引遍历的写法,也可以调整为:

addr_list = info['resources'][i]['addresses']
addr_count = len(addr_list)
for j in range(addr_count):
    addr_item = addr_list[j]
    if 'ip' in addr_item:
        ip.append(addr_item['ip'])

排查建议

遇到类似问题时,可以在if分支内先打印info['resources'][i]['addresses']的实际值和类型,确认结构是否符合预期,就能快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:57:04