Python遍历元组列表报NoneType对象不可下标访问TypeError
报错根因
你的falsy_instances列表并非全部由元组构成,其中索引为5的位置混入了None值。当循环遍历到这个None时,代码尝试执行x[0]取下标操作,但Python中NoneType类型的对象不支持下标索引,会直接触发TypeError: 'NoneType' object is not subscriptable报错,中断整个拼接流程。
修复方法
根据业务场景选择对应处理方式即可:
- 遍历阶段跳过非法值
不需要提前修改源列表,遍历过程中自动过滤不符合格式的元素:instance_list = "" for x in falsy_instances: # 过滤掉非二元组的非法元素 if not (isinstance(x, tuple) and len(x) == 2): continue instance_list += f'InstanceId: {x[0]} -> {x[1]}h\n' - 提前清洗源数据再处理
先把列表里的所有非法值过滤掉,后续逻辑不需要额外加判断:# 过滤得到仅包含合法二元组的列表 clean_instances = [item for item in falsy_instances if isinstance(item, tuple) and len(item) == 2] instance_list = "" for x in clean_instances: instance_list += 'InstanceId: ' + x[0] + ' -> ' + str(x[1]) + 'h\n'
提示:如果业务规则中
falsy_instances本身应该全为实例元组,优先排查生成该列表的上游代码,定位None值出现的原因,从源头避免非法数据流入后续逻辑。
内容的提问来源于stack exchange,提问作者Mez
相关产品推荐
相关产品推荐

