检测Python中字典.iteritems()的最后一次迭代
有没有简单的方法可以在用 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)
。