簡體   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