检测Python中字典.iteritems()的最后一次迭代

17 投票
11 回答
15140 浏览
提问于 2025-04-16 18:08

有没有简单的方法可以在用 iteritems() 遍历字典时,检测到最后一次循环呢?

11 个回答

4

我知道这个问题已经晚了,但这是我解决这个问题的方法:

dictItemCount = len(dict)
dictPosition = 1
for key,value in dict
    if(dictPosition = dictItemCount):
        print 'last item in dictionary'
    dictPosition += 1
17

有一种比较笨的方法可以做到这一点:

for i, (k, v) in enumerate(your_dict.items()):
    if i == len(your_dict)-1:
        # do special stuff here

不过你真的应该考虑一下你是否真的需要这样做。我几乎可以肯定还有其他更好的方法。

1

这是一个特殊的情况,属于这个更广泛的问题。我的建议是创建一个类似于enumerate的生成器,它在最后一个项目时返回-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

如果你想让它同时处理序列和生成器,可以加上gen = iter(gen)

撰写回答