繁体   English   中英

TypeError:'float'对象没有属性'__getitem__'

[英]TypeError: 'float' object has no attribute '__getitem__'

此代码是将csv文件读入几个列表的开始尝试。 我收到下面的错误,我不明白为什么浮动没有返回。 谢谢你的帮助!

 File "main.py", line 32, in <module>
     LR.openfile('djia_temp.csv')  
 File "main.py", line 9, in openfile
     self.xs = self.tempDiff(dataAvgandtemp)   
 File "main.py", line 18, in tempDiff
     tdArray.append([vector[0]-vector[1]]) 
 TypeError: 'float' object has no attribute '__getitem__'

码:

from processFile import processFile
import numpy as np

class processFile:

    @staticmethod
    def wholeFile(f):
        fileArray = []
        for line in f:
            fileArray.append(line.strip())
        return fileArray

    @staticmethod
    def liner(rows, columns, delimiter):
        vectors = []
        for row in rows:
            vector = []
            tok = row.split(delimiter)
            for num in columns:
                vectors.append(float(tok[num]))
        return vectors

class linRegmain:
    def openfile(self, file):
        f = open(file)
        a = processFile.wholeFile(f)[1:]
        dataAvgandtemp = processFile.liner(a, [2,3], ";")
        self.xs = self.tempDiff(dataAvgandtemp)
        self.ys = processFile.liner(a,[1], ";")
        print self.xs
        print self.ys


    def tempDiff(self, vectors):
        tdArray = []
        for vector in vectors:
            tdArray.append([vector[0]-vector[1]])
        return tdArray

if __name__ == '__main__':
    LR = linRegmain()
    LR.openfile('djia_temp.csv')

liner()声称返回一个向量列表。 它不是。 你正在制作一个float列表:

vectors.append(float(tok[num]))

因此,当您使用结果调用tempDiff()时, vector是一个float ,因此vector[0]会抛出异常。

我认为这是它应该做的:将每个浮点数添加到当前向量,然后将向量添加到结果:

@staticmethod
def liner(rows, columns, delimiter):
    vectors = []
    for row in rows:
        vector = []
        tok = row.split(delimiter)
        for num in columns:
            vector.append(float(tok[num])) # append to vector, not vectors
        vectors.append(vector)             # then append the vector to the result
    return vectors

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM