我将列出要求和我的代码示例。如何修复代码?问题是我无法更新dict的值。到布尔格式。它可能要求我通过dict的每个值。检查是真还是假
例如,Initial:D = {“1”:2,“2”:3}用作输出:D = {“1”:True,“2”:False}
要求:
def Q1(D,key):
e = key[0]
N = key[1]
for k,v in D.items():
if (v ** key[0]) % key[1] == int(k) % key[1]:
D[v] = True
else:
D[v] = False
它返回一个错误:
> <RuntimeError Traceback (most recent call
> last) <ipython-input-3-9cfd98926b81> in <module>
> 9 D[v] = False
> 10
> ---> 11 Q6({"1":2,"2":3},(5,14))
>
> <ipython-input-3-9cfd98926b81> in Q6(D, key)
> 3 N = key[1]
> 4
> ----> 5 for k,v in D.items():
> 6 if (v ** key[0]) % key[1] == int(k) % key[1]:
> 7 D[v] = True
>
> RuntimeError: dictionary changed size during iteration>
它说dictionnary改变了大小因为你使用v
而不是k
作为索引,所以它在dictionnary中添加了更多对并且失败,改为:
D[k] = True