【发布时间】:2013-12-05 14:39:36
【问题描述】:
我上网查了一下,好像不太明白。我是 python 新手,想知道如何解决这个问题。
运行时:
results = getRecommendations(userCompare[0], userCompare[0]['1'], sim_distance)
我得到错误:
TypeError Traceback (most recent call last)
<ipython-input-147-4d74cac55074> in <module>()
----> 1 results = getRecommendations(userCompare[0], userCompare[0]['1'], sim_distance)
<ipython-input-54-5f2d7e0dd3ba> in getRecommendations(data, person, similarity)
5 for other in data:
6 if other==person: continue #dont compare self
----> 7 sim=similarity(data, person, other)
8 if sim<=0: continue #ignore scores of 0 or lower
9 for item in data[other]:
<ipython-input-146-b30288308fee> in sim_distance(data, c1, c2)
2 def sim_distance(data, c1, c2):
3 si = {} #get the list of shared items
----> 4 for item in data[c1]:
5 if item in data[c2]:
6 si[item] = 1
TypeError: unhashable type: 'dict'
要创建 userCompare,我做了以下操作:
movies = {}
prefsList = []
def loadMovieLens(path = directory):
# Get movie titles
for line in open(path + 'u.item'):
(id, title) = line.split('|')[0:2]
movies[id] = title
# Load data
for k in range(len(centroidsM)):
prefs ={}
for rows in range(len(centroidsM[k])):
for columns in range(len(centroidsM[k][0,:])):
user = str(rows+1)
movieid =str(columns+1)
prefs.setdefault(user,{})
prefs[user][movies[movieid]] = float(centroidsM[k][rows,columns])
prefsList.append(prefs)
return prefsList
我基本上有一个具有不同 K 值的质心数组,每个 K 值都有一个 kx1682 矩阵(k 表示簇数),所以我将它加载到一个字典列表中。我希望这是有道理的。我开始讨厌 python 或至少 dicts。
【问题讨论】:
标签: python dictionary hash numpy