我似乎有一行代码,对象不是可订阅的错误,但是equate中的所有项目都单独检出。给我这个问题的等式是这个
oRetVal['Assay'] = tRS2[oCSNo_dx[aRow[oFields_dx['CycleRef']]][oFields_dx['Assay']]]
在此错误行之前的行上,我运行以下测试。
print(oCSNo_dx[aRow[oFields_dx['CycleRef']]]) # get 1
print(oFields_dx['Assay']) # get 21
print(tRS2[1][21]) # get 0.0
print(tRS2[1]) # get single recordset (correct one) as expected
print(tRS2[oCSNo_dx[aRow[oFields_dx['CycleRef']]]][oFields_dx['Assay']]) # get 0.0
oRetVal['Assay']=0.0 # No Fault
oRetVal['Assay']=tRS2[1][21] # No fault
print(oRetVal['Assay']) # get 0.0
从测试oRetVal ['Assay']应该从完整等式中取tRS2 [1] [21]中的值0.0,但它给出了错误。只是为了确保我运行以下内容并且没有出现错误..
s = oCSNo_dx[aRow[oFields_dx['CycleRef']]]
p = oFields_dx['Assay']
oRetVal['Assay']=tRS2[s][p]
我现在已经离开了这个,但我非常想知道为什么我不能做一个班轮,以防这是一个语法的事情,我再次遇到它。想法是谁?
答案 0 :(得分:2)
您的方括号位置错误。您没有查找tRS2[1][21]
,而是tRS2[1[21]]
,因此错误。它应该是:
tRS2[oCSNo_dx[aRow[oFields_dx['CycleRef']]]][oFields_dx['Assay']]
但实际上,不要这样做;正如您所发现的那样,它无法调试。设置一些中间变量并在查找中使用它们。