使用索引运算符时Python字典读取错误
最初,我尝试将数据集读入字典使用索引运算符时Python字典读取错误,python,recommender-systems,Python,Recommender Systems,最初,我尝试将数据集读入字典 with open("msong.csv") as f: reader = csv.DictReader(f) data = [r for r in reader] 字典包含如下数据: 我正在使用该功能根据用户喜好推荐歌曲 在输入时,我得到了一个错误 recommend(data[0][user_id],4,euclidean_similarity) 错误:推荐(数据[0][user\u id],4,欧几里德相似性)数据[0][user\u id] 您使
with open("msong.csv") as f:
reader = csv.DictReader(f)
data = [r for r in reader]
字典包含如下数据:
我正在使用该功能根据用户喜好推荐歌曲
在输入时,我得到了一个错误
recommend(data[0][user_id],4,euclidean_similarity)
错误:推荐(数据[0][user\u id],4,欧几里德相似性)
数据[0][user\u id]
您使用的不是'user\u id'
字符串作为键,而是user\u id
变量,如果我正确理解您的意图,该变量可能未设置
def recommend(person, bound, similarity=pearson_similarity):
scores = [(similarity(person, other), other) for other in data if other != person]
scores.sort()
scores.reverse()
scores = scores[0:bound]
print (scores)
recomms = {}
for sim, other in scores:
ranked = data[other]
for itm in ranked:
if itm not in data[person]:
weight = sim * ranked[itm]
if itm in recomms:
s, weights = recomms[itm]
recomms[itm] = (s + sim, weights + [weight])
else:
recomms[itm] = (sim, [weight])
for r in recomms:
sim, item = recomms[r]
recomms[r] = sum(item) / sim
return recomms
recommend(data[0][user_id],4,euclidean_similarity)