添加更多词典时 python 中的 KeyError 3

KeyError 3 in python when more dictionaries are added

我写了下面的代码。代码 运行 很好。但是当我添加 yt[i]=y[i-1]+delta(R1,R2) 时出现错误:

yt[i]=y[i-1]+delta(R1,R2) KeyError: 1

函数a只是一个例子,并不是真实的。

import numpy as np
import math
from math import *

x  = { 0: 0.3 }
xt = {}
N=10
y  = { 0: 0.2 }
yt = {}

def a(z,s):
    return sqrt(z)+s

def delta(r1,r2):
        sig=0.055
        d=sig*(np.sqrt(-2*np.log(r1))*np.cos(np.radians(r2)))
        return d

for i in range(1,N):
    R1=np.random.uniform(0,1)
    R2=np.random.uniform(0,1)
    R3=np.random.uniform(0,1)

    xt[i]=x[i-1]+delta(R1,R2)
    yt[i]=y[i-1]+delta(R1,R2)

    if a(xt[i],yt[i])>R3:
        x[i]=xt[i]
        print('f')
    else:
        x[i]=x[i-1]
        print('s')

    print(x[i], delta(R1,R2), i)

感谢您的帮助。

代码适用于 x,因为下部的 if/else 块更新 x 以包含 x[i] 的值(这将在下一次迭代中检查为 x[i-1])。 y 字典没有这样的更新,所以在第二次传递时,y[i-1] 不可用。

您可能需要在现有的 if/else 块中或在具有自己逻辑的等效块中添加像 y[i]=yt[i] 这样的行。