如何访问for循环的下一次迭代

时间:2016-10-13 12:43:54

标签: python-3.x for-loop dictionary

我有字典,我正在循环。我想说,如果值==某个数字(在这种情况下为0)那么for循环的下一次迭代的值将是该值的2倍。

我有一个如下字典:

d = {'a' : 1, 'b' : 0, 'c' : 4}

当我使用for循环遍历字典时,如果当前迭代= 0,我希望将下一次迭代乘以2。

for k, v in d.items():
    if k == 0:
        [next iteration v = v * 2]
    else:
        v = v + 1

所以我希望最终得到这样的字典:

d = {'a' : 2, 'b' : 0, 'c' : 9}

这只是一个简单的例子,但希望说明我想要实现的目标。

由于

2 个答案:

答案 0 :(得分:2)

您可以使用orderedDict拥有字典并保留订单。

查看您的算法,如果它不为零,则为所有值加1,如果它为零,则先将下一个项相乘,然后再加1。最基本和最简单的方法之一是,有一个标志来决定你是否应该乘以下一个值。

import collections

d = (("a", 1), ("b", 0), ("c", 4))
od = collections.OrderedDict(d)

multiply = False
for k in od.keys():
    if multiply:
        od[k] *= 2
    if od[k] != 0:
        od[k] += 1
        multiply = False
    else:
        multiply = True

print(od)

答案 1 :(得分:0)

不幸的是你正在使用字典,字典不保持秩序。您可以使用诸如列表之类的东西。不确定你是否会在列表中设置键/值对。