'int'对象不可订阅,但所有相关变量都很好

时间:2017-06-22 10:24:20

标签: python syntax

我似乎有一行代码,对象不是可订阅的错误,但是equate中的所有项目都单独检出。给我这个问题的等式是这个

oRetVal['Assay'] = tRS2[oCSNo_dx[aRow[oFields_dx['CycleRef']]][oFields_dx['Assay']]]
  • tRS2 =从sqlite数据库作为元组返回的记录集
  • oCSNo_dx =用作索引的对象
  • aRow =表示数据库表中单行的值数组
  • oFields_dx =另一个用作索引的对象

在此错误行之前的行上,我运行以下测试。

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]

我现在已经离开了这个,但我非常想知道为什么我不能做一个班轮,以防这是一个语法的事情,我再次遇到它。想法是谁?

1 个答案:

答案 0 :(得分:2)

您的方括号位置错误。您没有查找tRS2[1][21],而是tRS2[1[21]],因此错误。它应该是:

tRS2[oCSNo_dx[aRow[oFields_dx['CycleRef']]]][oFields_dx['Assay']]

但实际上,不要这样做;正如您所发现的那样,它无法调试。设置一些中间变量并在查找中使用它们。