如何迭代实例对象的数据属性,一次返回两个值?

Spi*_*kie 2 python iterator

我需要一次返回两个值,所以我有:

class IterableObject(object):
  def __iter__(self):
    for item in self.__dict__:
      return  self.__dict__[item + 1], self.__dict__[item]
Run Code Online (Sandbox Code Playgroud)

所以我可以:

myObj1, myObj2 = IterableObject()

value = myObj1.balance - myObj2.balance
Run Code Online (Sandbox Code Playgroud)

当然它没有用.我究竟做错了什么?我想我不能在这样的项目上增加价值.

Mar*_*ers 5

itertools文档中,有一个示例函数pairwise,可以将其复制到项目中:

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)
Run Code Online (Sandbox Code Playgroud)

使用它像:

for x1, x2 in pairwise(some_iterable):
    # etc..
Run Code Online (Sandbox Code Playgroud)

请注意,当您迭代时dict,项目不一定按顺序返回,因此您应该先排序.