检测python中的dictionary.iteritems()上的最后一次迭代

kad*_*dam 13 python dictionary

是否有一种简单的方法来检测最后一次迭代,同时使用iteritems()

Bjö*_*lex 12

有一种丑陋的方式可以做到这一点:

for i, (k, v) in enumerate(your_dict.iteritems()):
    if i == len(your_dict)-1:
        # do special stuff here
Run Code Online (Sandbox Code Playgroud)

但你应该考虑是否需要这个.我几乎可以肯定还有另一种方式.

  • @ninjagecko:如果确实如此,那你就搞砸了.在迭代集合时调整集合大小是一种应受惩罚的冒犯,因为它会产生高度混乱和无意义的结果,甚至比"eval"更有用. (9认同)

sen*_*rle 1

这是这个更广泛问题的一个特例。我的建议是创建一个类似枚举的生成器,在最后一项上返回 -1:

def annotate(gen):
    prev_i, prev_val = 0, gen.next()
    for i, val in enumerate(gen, start=1):
        yield prev_i, prev_val
        prev_i, prev_val = i, val
    yield '-1', prev_val
Run Code Online (Sandbox Code Playgroud)

gen = iter(gen)如果您希望它处理序列和生成器,请添加。