TypeError:'int'对象是unsubscriptable

时间:2010-10-30 20:35:57

标签: python

在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

这个错误是什么意思?

3 个答案:

答案 0 :(得分:14)

今天[2]中的“[2]”称为下标。

  

这种用法只有在“今天”才有可能   是序列类型。原生序列   types - List,string,tuple等

由于您收到错误 - 'int'对象是不可取消的。这意味着“今天”不是序列而是int类型对象。

当您需要序列时,您需要查找/调试“today”或“today”为什么是int类型对象。

[编辑:说清楚]

  

错误可以在

  1. sectorcalc [I]
  2. 今天(已经证明是一个清单)
  3. 昨天

答案 1 :(得分:2)

这令人困惑:

today = quote 

today = datetime.date.today()?为什么约会突然引用一个引用?变量名称应该是quoteForToday还是更具表现力的东西? yesterday也是如此。像你一样划分两个日期对我来说毫无意义。

由于这是quotetodayyesterday是指不同日期的价格或费率?名称很重要 - 请仔细选择。你可能是那个必须在六个月后维持这个人的人,你也不会记得他们的意思。

不是你写的代码是有效的,但我不明白为什么你不会使用循环。

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。