実現したいこと
student.csvに保存されているデータをファイル全てを読み込んで、
一行ごとのデータを、名前をキーに、スコアを値にもつ辞書型として保存したい。
カンマで[name, score]となるリストに区切る。
以下のような一行結果を得たい
python3 main.py
{'Smith': 60, 'Johnson': 100, 'William': 80, 'Jones': 65, 'Brown': 30, 'Davis': 20, 'Miller': 90, 'Willson': 70, 'Moore': 60, 'Taylor': 100, 'Mary': 80, 'Patricia': 80, 'Linda': 70, 'Barbara': 90, 'Elizabeth': 10, 'Jennipher': 50, 'Maria': 35, 'Margaret': 55, 'Dorothy': 40, 'Lisa': 70}
一行ごとのデータを、名前をキーに、スコアを値にもつ辞書型に保存する
発生している問題・分からないこと
score = int(line[1])
~~~~^^^
IndexError: list index out of range
エラーメッセージ
error
1PS C:\Users\0hc49\Documents\CODEPREP\Python\2.Python基礎 データ操作編\❻ 2練習問題\3. データを辞書型に保存する> python3 main.py 3Traceback (most recent call last): 4 File "C:\Users\0hc49\Documents\CODEPREP\Python\2.Python基礎 データ操作編\❻ 練習問題\3. データを辞書型に保存する\main.py", line 31, in <module> score = int(line[1]) 5 ~~~~^^^ 6IndexError: list index out of range 7PS C:\Users\0hc49\Documents\CODEPREP\Python\2.Python基礎 データ操作編\❻ 練習問題\3. データを辞書型に保存する> 8
該当のソースコード
main.py
1with open('student.csv', 'r') as f: 2 student = {} 3 # ファイル全てを読み込む 4 data = f.readlines() 5 for line in data: 6 # カンマで[name, score]となるリストに区切る 7 line = line.strip().split(",") 8 name = line[0] 9 score = int(line[1]) 10 student[name] = score 11 print(student)
student.csv
1Smith,60 2Johnson,100 3William,80 4Jones,65 5Brown,30 6Davis,20 7Miller,90 8Willson,70 9Moore,60 10Taylor,100 11Mary,80 12Patricia,80 13Linda,70 14Barbara,90 15Elizabeth,10 16Jennipher,50 17Maria,35 18Margaret,55 19Dorothy,40 20Lisa,70 21
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
コードの書き間違いがないか丁寧に見直したが間違はないみたいです。
score = int(line[1])
~~~~^^^
IndexError: list index out of range
の見直し方が全く分かりません。
ネット検索、でも解決できませんでした。
補足
CODEPREPの Pythonで勉強中です。
https://codeprep.jp/books/71/chapters/6/sections/3
windows10, vscode,使用しています。必要な拡張機能は入っているとおもいます。
回答2件
あなたの回答
tips
プレビュー


