我有字典,我正在循环。我想说,如果值==某个数字(在这种情况下为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}
这只是一个简单的例子,但希望说明我想要实现的目标。
由于
答案 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)
不幸的是你正在使用字典,字典不保持秩序。您可以使用诸如列表之类的东西。不确定你是否会在列表中设置键/值对。