あなたの辞書には、キーを持っていない、まだ、そうdata[user]
は存在しません、それにマッピングを追加することができます前に、辞書prefs[user]
を定義する必要があります。あなたは、Pythonがdict.setdefault()
メソッドを使用してキーを欠落しているため、デフォルト値を追加することができます:
prefs.setdefault(user, {})[title] = float(rating)
上記そのキーが」doesnの場合user
で指定されたキーの値として{}
(空の辞書)を追加するprefs
を伝えますまだ存在しない。いずれにしても、既存の値または新しい値が返されます。その後、いくつかの小さな改善を
、完全な機能は次のようになります。
def loadMovieLens(path='C:\Users\karan\Desktop\ml-100k'):
prefs = {}
with open(os.path.join(path, 'new1.data')) as f:
for line in f:
user, title, rating, ts = line.split('\t', 4)[:4]
prefs.setdefault(user, {})[title] = float(rating)
return prefs
私は、(読み込みが完了したときにそのファイルが適切に閉じられている)with
文を追加したパスを構築するためにos.path.join()
を使用(それ現在のオペレーティングシステムとは独立したパス区切り文字を扱うことができます)、4回に制限されます。
csv
モジュールに切り替えると、タブでの分割も処理できます。
データファイルの内容を共有できますか? –
'prefs [user]'は存在しません。あなたはそれを作らなければなりません。 –
@PatrickHaughのように言った。 'prefs [user] = {}'のように 'prefs [user]'を作成することができます。 –