2017-03-28 18 views
0

私はPythonには少し新しく、私の間違いが何を伴っているかを理解するのに役立つことができます。Python forループIndexError:リストのインデックスが範囲外にある

datafile = "filename.csv" 

colors = ['Green','White','Yellow','Pink','Blue','Purple','Gray','Brown','Orange','Red','Black'] # put in order of the columns 

colnames = [] 
for color in colors: 
    colnames.append(color+"1") 
    colnames.append(color+"2") 

# Define data structure to hold responses for each column 
responses = dict() 
for colname in colnames: 
    responses[colname] = [] 

# Read in the responses 
lines = open(datafile,"r").readlines() 
for line in lines: 
    data = line.strip('\n').split(",") 
for i,colname in enumerate(colnames): 
    if '1' in colname: 
     responses[colname].append(data[i]) 
    else: 
     responses[colname].append(data[i].split(',')) 

--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 
<ipython-input-21-4039ddb1f5f5> in <module>() 
    21    responses[colname].append(data[i]) 
    22   else: 
---> 23    responses[colname].append(data[i].split(',')) 
    24 
    25 # Count the number of subjects 

    IndexError: list index out of range 

私はIndexError: list index out of rangeが実際else:からであるか、何かがresponses[colname].append(data[i].split(','))と間違っているかどうかわからないです。 また、リストcolnamesの私のforループでは、私はかなり確信することができ、その側面は正しいですが、私はあなたがIndexErrorを得た理由のために割り当て上記のコードは、あると思い

+0

エラーが表示されたら、行番号が表示されます。それを見て、見つけたものを見てみてください。 – SneakyTurtle

+0

は 'data [i]'のように見えます。 – haifzhan

+0

インデックスはおそらくデータ[i]のものです。基本的にはより多くの色を持っています(1と2のラベルを付けてからx2)。次にデータ要素があります – Jim

答えて

0
for line in lines: 
    data = line.strip('\n').split(",") 

を知っていることはありませんdataは前のものを上書きし、dataの内容は常に最後の行です。 (最後の行だけが必要な場合を除き)。

例えば:あなたのforループを意味

filename.csv

blue,red 
red,green 
yellow,red 

data=['yellow', 'red'] 

data=lines[-1].strip('\n').split(",")

と同等ですだから私は、これはあなたが望むものをされていると:

またはこのリストの内包表記を使用します。

data=[line.strip('\n').split(",") for l in lines] 

をそしてdataの長さがcolnames以上であることを確認してください。 ところで、あなたのコード、またはprint変数をデバッグしようとすると、その理由がわかります。

関連する問題