添加更多词典时 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]
这样的行。
我写了下面的代码。代码 运行 很好。但是当我添加 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]
这样的行。