在python中我收到此错误:
TypeError: 'int' object is unsubscriptable
这发生在以下行:
sectorcalc[i][2]= ((today[2]/yesterday[2])-1)
我无法在任何地方为python找到unsubscriptable的好定义。
for quote in sector[singlestock]:
i+=1
if i < len(sector):
if i==0:
sectorcalc[i][0]= quote[0]
sectorcalc[i][2]= 0
sectorcalc[i][3]= 0
sectorcalc[i][4]= 0
sectorcalc[i][5]= 0
sectorcalc[i][6]= 0
sectorcalc[i][7]= 0
else:
yesterday = sector[singlestock-1][i]
print yesterday
today = quote
print type(today[2])
sectorcalc[i][2]= ((today[2]/yesterday[2])-1)
sectorcalc[i][3]= (today[3]/yesterday[3])-1
sectorcalc[i][4]= (today[4]/yesterday[4])-1
sectorcalc[i][5]= (today[5]/yesterday[5])-1
sectorcalc[i][6]= (today[6]/yesterday[6])-1
sectorcalc[i][7]= (today[7]/yesterday[7])-1
这个错误是什么意思?
答案 0 :(得分:14)
今天[2]中的“[2]”称为下标。
这种用法只有在“今天”才有可能 是序列类型。原生序列 types - List,string,tuple等
由于您收到错误 - 'int'对象是不可取消的。这意味着“今天”不是序列而是int类型对象。
当您需要序列时,您需要查找/调试“today”或“today”为什么是int类型对象。
[编辑:说清楚]
错误可以在
中
答案 1 :(得分:2)
这令人困惑:
today = quote
today = datetime.date.today()
?为什么约会突然引用一个引用?变量名称应该是quoteForToday
还是更具表现力的东西? yesterday
也是如此。像你一样划分两个日期对我来说毫无意义。
由于这是quote
,today
和yesterday
是指不同日期的价格或费率?名称很重要 - 请仔细选择。你可能是那个必须在六个月后维持这个人的人,你也不会记得他们的意思。
不是你写的代码是有效的,但我不明白为什么你不会使用循环。
for j in range(2,7):
sectorcalc[i][j] = (today[j]/yesteday[j])-1
而不是
sectorcalc[i][2]= ((today[2]/yesterday[2])-1)
sectorcalc[i][3]= (today[3]/yesterday[3])-1
sectorcalc[i][4]= (today[4]/yesterday[4])-1
sectorcalc[i][5]= (today[5]/yesterday[5])-1
sectorcalc[i][6]= (today[6]/yesterday[6])-1
sectorcalc[i][7]= (today[7]/yesterday[7])-1
答案 2 :(得分:1)
如何重现该错误:
myint = 57
print myint[0]
编写编译器的人说你不能通过以下方式做到这一点:
TypeError: 'int' object is unsubscriptable
如果您想下标某些内容,请使用以下数组:
myint = [ 57, 25 ]
print myint[0]
打印:
57
<强>解决方案:强>
将int提升为列表或其他索引类型,或者停止下标int。