ユーザーによる映画の評価を辞書に保存しようとしています。データが取得されるファイルの形式は次のとおりです。
ユーザー ID | ムービー ID | 評価 | タイムスタンプ
タブ区切りの値です
//Take the first 100 lines from the file and store each line as a array element of text
string[] text = System.IO.File.ReadLines(@File path).Take(100).ToArray();
//extDic[username] - [moviename][rating] is the structure
Dictionary<string,Dictionary<string,double>> extDic=new Dictionary<string,Dictionary<string,double>>();
Dictionary<string, double> movie=new Dictionary<string,double>();
foreach(string s in text)
{
int rating;
string username=s.Split('\t')[0];
string moviename=s.Split('\t')[1];
Int32.TryParse(s.Split('\t')[2], out rating);
movie.Add(moviename,rating);
if (extDic.ContainsKey(username))
{
//Error line
extDic[username].Add(moviename, rating);
}
else
{
extDic.Add(username, movie);
}
movie.Clear();
}
エラー行に「同じキーを持つアイテムが既に追加されています」というエラーが表示されます。エラーの内容を理解し、if ステートメントで確認して解決しようとしました。しかし、それはそれを解決しません。
また、movie.clear() の意味があるのだろうか?