'int' object has no attribute '__getitem__'
Question: 
    import math
    import os
    
    
    class collection:
        col = [[0 for col in range(5)] for row in range(6)]
        dist = [[0 for col in range(6)] for row in range(6)]
        filename = ""
        result = ""
    
        def __init__(self,arg1):
            self.filename = arg1
    
        def coll(self):
    
            for i in range(6):
                try:
                    if(i==0):
                        f = open(self.filename,'r')
                    elif(i==1):
                        f = open("chap1.txt",'r')
                    elif(i==2):
                        f = open("chap2.txt",'r')
                    elif(i==3):
                        f = open("chap3.txt",'r')
                    elif(i==4):
                        f = open("chap4.txt",'r')
                    elif(i==5):
                        f = open("chap5.txt",'r')
    
                    for j in range(5):
                        self.result = f.readline()
                        self.col[i][j] = self.result
                finally:
                    print "file handling error"
    
        def distance(self):
            for i in range[6]:
                for j in range[6]:
                    dis = 0
                    for k in range[5]:
                        dis += math.fabs((self.col[i][k]-self.col[j][k])*(j-i))
                    self.dist[i][j] = dis
                    self.dist[i][i] = sys.maxdouble
            return self.dist
    
    class profile:
        dist = [[0 for col in range(6)]for row in range(6)]
        filename = ""
        pque = [[0 for col in range(6)]for row in range(6)]
        d = [[0 for col in range(6)]for row in range(6)]
        par = [[0 for col in range(6)]for row in range(6)]
        st = 0
    
        def __init__(self,arg1):
            self.filename = arg1
    
        def begin(self):
            ob = collection(self.filename)
            ob.coll()
            dist = ob.distance()
    
        def sssp(self):
            for i in range(6):
                pque[i] = sys.maxdouble
                d[i] = sys.maxdouble
            d[0] = 0
            pque[0] = 0
    
            while isempty()==0:
                u = extract_min()
                for i in range(6):
                    if d[i]>d[u]+dist[u][i]:
                       d[i] = d[u]+dist[u][i]
                       pque_deckey(i,d[i])
                       par[i]=u
                    if u!=0:
                        print u
                print "\n"
                for i in range(6):
                    print par[i]
    
        def extract_min():
            ret = 0
            shift = 0
            minimum = pque[0]
    
            for i in range(6):
                if pque[i]<minimum:
                    minimum = pque[i]
                    ret = i
            pque[ret] = sys.maxdouble
            return ret
    
        def isempty(self):
            count = 0
            for i in range(6):
                if pque[i] == sys.maxdouble:
                    count=count+1
            if count==6:
                return 1
            else :
                return 0
    
        def pque_deckey(self,im,di):
            pque[im]=di
    
    class main:
        filename = raw_input("enter name of student:\n")
        filename = filename + ".txt"
        if(os.path.exists(filename)==1):
            f = file(filename,"r")
        else:
            f = file(filename,"w+")
            att1 = raw_input("att1 score:\n")
            att2 = raw_input("att2 score:\n")
            att3 = raw_input("att3 score:\n")
            att4 = raw_input("att4 score:\n")
            att5 = raw_input("att5 score:\n")
            f.write(att1)
            f.write("\n")
            f.write(att2)
            f.write("\n")
            f.write(att3)
            f.write("\n")
            f.write(att4)
            f.write("\n")
            f.write(att5)
            f.write("\n")
        stud = profile(filename)
        stud.begin()
        stud.sssp()
    

it shows a runtime error :

    
    
    File "C:\Python27\winculum.py", line 33, in coll
        self.col[i][j] = self.result
    TypeError: 'int' object has no attribute '__getitem__'
    

I am just a beginner at python, and I am unable to rectify this even after
searching on the net.


Answer: The error:

    
    
    'int' object has no attribute '__getitem__'
    

means that you're attempting to apply the index operator `[]` on an int, not a
list. So is `col` not a list, even when it should be? Let's start from that.

Look here:

    
    
    col = [[0 for col in range(5)] for row in range(6)]
    

Use a different variable name inside, looks like the list comprehension
overwrites the `col` variable during iteration. (Not during _the_ iteration
when you set `col`, but during the following ones.)

