繁体   English   中英

使用索引运算符时Python字典读取错误

[英]Python dictionary reading error when using index operators

最初,我尝试将数据集读入字典

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变量,该变量可能未设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM