在Python中识别循环的迭代次数

14

基本上我想知道在循环迭代中我是否正在处理第N个项目。

d = {1:2, 3:4, 5:6, 7:8, 9:0}

for x in d:
    if last item: # <-- this line is psuedo code
        print "last item :", x
    else:
        print x

2
如下所述,字典没有“最后一项”,因为它们的排序有些随意。因此,您目前编写的问题有点令人困惑。确实,您可以使用for x in d:来迭代键,但这些键并不总是以有用的方式排序。 - eksortso
这里有一个解决方案建议尽可能处理第一个项目而不是最后一个,并提供了一种简单的检测方法。https://dev59.com/fnI-5IYBdhLWcg3w48tO#1630350 - trss
这应该是 https://dev59.com/kHRB5IYBdhLWcg3wxZxK 的副本,但今天我已经用完了关闭票。 - Karl Knechtel
5个回答

30

使用enumerate函数:

#!/usr/bin/env python

d = {1:2, 3:4, 5:6, 7:8, 9:0}

# If you want an ordered dictionary (and have python 2.7/3.2), 
# uncomment the next lines:

# from collections import OrderedDict
# d = OrderedDict(sorted(d.items(), key=lambda t: t[0]))

last = len(d) - 1

for i, x in enumerate(d):
    if i == last:
        print i, x, 'last'
    else:
        print i, x

# Output:
# 0 1
# 1 3
# 2 9
# 3 5
# 4 7 last

@The MYYN:谢谢。我想我还没有提出任何问题。这就是为什么我从来没有看到过复选框轮廓的原因。顺便说一下,我不明白什么是复选框轮廓。我以后会理解的。 - eyquem
@MYYN 不要紧张。 - NorthIsUp
与我所期望的 Python 能做的相比有点凌乱,但这不是你的错,这是我能找到的最优雅的解决方案。谢谢 :) - 2rs2ts

5

你觉得使用enumerate怎么样?

>>> d = {1:2, 3:4, 5:6, 7:8, 9:0}
>>> for i, v in enumerate(d):
...     print i, v              # i is the index
... 
0 1
1 3
2 9
3 5
4 7

3
for x in d.keys()[:-1]:
    print x
if d: print "last item:", d.keys()[-1]

d = {1:2, 3:4, 5:6, 7:8, 9:0} 时,for x in d[:-1]: 会出现 TypeError: unhashable type 错误,因为字典 d 的值是整数。 - martineau
@martineau,请在此处尝试使用for x in d.keys()[:-1]。@Apalala正在遍历d中的键,而不是d本身。d的值为整数在这里是无关紧要的。 - eksortso
@eksorto 我成功发布了一个没有使用 .keys() 的版本,持续了几分钟。@martineau 可能已经看到了那个版本。 - Apalala
1
@Apalala:你是如何修改已发布的版本而不被标记为编辑的?好奇的人想知道...;-) - martineau
@Apalala:哦,如果你现在对它进行虚拟编辑,我会给它点赞。 - martineau
显示剩余6条评论

1
d = {1:2, 3:4, 5:6, 7:8, 9:0}

for i,x in enumerate(d):
    print "last item :"+repr(x) if i+1==len(d) else x

但是无序字典的最后一项并没有任何意义


好的,是的,这意味着您将不再进入循环。例如:您可能希望在每个后面加上“,”,除了最后一个后面加上“。”来打印它们。 - Camion

0
list = [1,2,3]

last = list[-1]

for i in list:
    if i == last:
        print("Last:")
    print i

输出:

1
2
Last:
3

警告:仅在最后两个元素不相等时有效


只有在列表中最后一个元素没有重复时,才能正常工作。 - Camion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接