2017-08-31 10 views
-1

私はエラーが発生します:キーエラー: '1'なぜか分かりませんか?

Traceback (most recent call last): 
    File "C:\Users\RoszkowskiM\Desktop\win5.py", line 120, in <module> 
    busses_in_year = mydict[Year] 
KeyError: '1' 

私はそれが私の辞書とは何かを持っていると仮定しています。このコードの目的は、Yeardata_locationと一致させることで、3セットのデータを出力します。データはcsvシートから取得されています。 Excel Sheet

data = list(csv.reader(open(LOAD_GEN_DATAFILE))) 
mydict = {} 

for row in data: 
    Year, busnum, busname, scaled_power, tla, data_location, empty, year_link, from_, to, digit, name2, tla_2, min_value, max_value = row[0:15] 
    busses_in_year = mydict[Year] 

    #Add the bus to the list of busses that stop at this location 
    busses_in_year[data_location].append((busnum,busname,scaled_power)) 

    if Year in mydict and data_location in mydict[Year]: 
     busses_in_year = mydict[Year] 
     print("Here are all the busses at that location for that year and the new LOAD TOTAL: ") 
     print("\n") 
     output='Bus #: {}\t Area Station: {}\t New Load Total: {} MW\t' 
     print(output.format(busnum,busname,scaled_power)) 
    else: 
     exit 
+0

'mydict'が空なので、どこでやりますこの構造を埋める? – Daniel

+0

あなたは 'mydict [Year]'にアクセスしようとしていますが、 'mydict'は空ですので、そのようなキーが辞書に存在しないことを伝えています。 –

+0

私は、添付されているイメージがあなたがロードしているCSVファイルだとします。しかし、内容は 'mydict'ではなく' data'にあります。 – Daniel

答えて

-1

存在しないデータmydict [年]にアクセスしようとしています。主にmydict要素が空です。ファイルが正しくロードされているかどうかを確認するために、コードをデバッグしてください。

これはあなたが指定したコードです。

data = list(csv.reader(open(LOAD_GEN_DATAFILE))) 
mydict = {} 
for row in data: 
    Year,busnum,busname,scaled_power,tla,data_location,empty,year_link,from_,to,digit,name2,tla_2,min_value,max_value = row[0:15] 


busses_in_year = mydict[Year] 

mydictはまだempyですが、値を設定していません。ただ、

mydict[year] , mydict[busnum], .... = row[:15] 

として、forループで値を置き換えるしかし、私はそれが最終的mydictは、データの最後の行になりますので、あなたが望むものである疑い。あなたは完全なデータが必要な場合は、JSONにデータフレームを使用してみたり、あなただけの

data = list(csv.reader(open(LOAD_GEN_DATAFILE))) 
mydata = [] 
for row in data: 
    mydict = {} 
    mydict[Year],mydict[busnum],..... = row[0:15] 
    mydata.append(mydict) 

ように、コードを置き換えることができその後で好きなことを実行します。

for mydict in mydata: 
    print(mydict[year]) 
+0

それは方法ではない、辞書が作成されます。あなたのソリューションはKeyErrorにもつながります。 – Daniel

+0

試しましたか?それはどうなるのだろうか。彼はまずそれを設定せずに値にアクセスしようとしています。 –

+0

私は読むことができ、コードが間違っているので、私はそれを試す必要はありません。 – Daniel

関連する問題