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

Python遍历OrientRecord列表遇TypeError,需循环取连续两对象属性

解决Python循环中一次处理两个OrientRecord对象的问题

你遇到的TypeError: 'OrientRecord' object is not an iterator错误原因很清晰——原来的代码里,items是从列表中逐个取出的单个OrientRecord对象,它本身不是迭代器,所以不能用next()去调用它。下面给你两种可行的解决方案:

方法一:按索引步长遍历

直接通过列表索引,每次跳过一个元素,处理连续的一对对象:

for i in range(0, len(iteritems), 2):
    # 处理第一个对象
    x = iteritems[i].oRecordData
    print(x['attribute1'])
    
    # 检查是否存在下一个对象,避免索引越界
    if i + 1 < len(iteritems):
        y = iteritems[i+1].oRecordData
        print(y['attribute2'])

这种方法简单直观,适合需要明确控制索引的场景,还能避免列表长度为奇数时出现索引错误。

方法二:使用迭代器逐对取出

先把列表转换成迭代器,然后在循环中每次取出两个元素:

iter_obj = iter(iteritems)
while True:
    try:
        # 获取第一个元素
        item1 = next(iter_obj)
        x = item1.oRecordData
        print(x['attribute1'])
        
        # 获取第二个元素
        item2 = next(iter_obj)
        y = item2.oRecordData
        print(y['attribute2'])
    except StopIteration:
        # 迭代完成,退出循环
        break

这种方法更符合迭代器的使用逻辑,不管列表长度是奇数还是偶数,都能安全处理——如果最后只剩单个元素,只会打印它的attribute1,不会报错。

原来的代码为什么会报错?

你原来的for items in iteritems是逐个遍历列表中的每个OrientRecord对象,所以每次循环里的items都是单个对象,不是可以用next()调用的迭代器,自然会触发类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:48:53