python - 使用索引运算符时 Python 字典读取错误
问题描述
最初,我尝试将我的数据集读入字典
with open("msong.csv") as f:
reader = csv.DictReader(f)
data = [r for r in reader]
字典包含类似这样的数据:
[{'': '0',
'artist_name': 'Jack Johnson',
'listen_count': '1',
'release': 'Thicker Than Water',
'song_id': 'SOAKIMP12A8C130995',
'title': 'The Cove',
'user_id': 'b80344d063b5ccb3212f76538f3d9e43d87dca9e',
'year': '0'},
{'': '1',
'artist_name': 'Paco De Lucia',
'listen_count': '2',
'release': 'Flamenco Para Ni\xc3\xb1os',
'song_id': 'SOBBMDR12A8C13253B',
'title': 'Entre Dos Aguas',
'user_id': 'b80344d063b5ccb3212f76538f3d9e43d87dca9e',
'year': '1976'},
我正在使用该功能根据用户口味推荐歌曲
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)
错误:推荐(数据[0][user_id],4,euclidean_similarity)
解决方案
data[0][user_id]
如果我正确理解了您的意图,则不是使用'user_id'
字符串作为键,而是使用user_id
可能未设置的变量。
推荐阅读
- python - 如何从 python 中的另一个 .py 文件调用函数?
- java - 如何通过Java获取服务器响应时间
- javascript - 如何理解节点 js 的以下函数输出
- android - 使用 FFmpeg 在图像上连续播放 gif
- javascript - 使用 Javascript 检索 Google Analytics 跟踪器名称时出现问题
- javascript - Sequelize 和 GraphQL 解析器不可为空的字段
- c++ - 为什么模板参数推导失败?
- sql - 复制/表在 SQL 中保持旧索引不变
- elasticsearch - 如何为弹性搜索聚合内部嵌套对象元素?
- c# - 将字符串从文本框转换为双精度在 C# 中不起作用