Dict不可哈希python

2024-10-01 15:46:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在网上看了一下,似乎不太明白。我是python新手,想知道如何解决这个问题。在

运行时:

results = getRecommendations(userCompare[0], userCompare[0]['1'], sim_distance)

我得到错误:

^{pr2}$

为了创建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表示簇数),所以我把它加载到dict列表中。我希望这有道理。我开始讨厌python或者至少讨厌dicts。在


Tags: columnspathinidforlenlinerange
2条回答

不能使用dict作为字典键。如果我这么做会发生什么:

d = {}
k1 = {1: 2}
k2 = {2: 1}

d[k1] = "a"
d[k2] = "b"

k1[2] = 1
k2[1] = 2

我现在有了k2 == k1,那么d[{1:2, 2:1}]做什么呢?这就是为什么不能使用dict作为键。在

如果您真的需要这样做(例如在Counter中使用),这里有一个选项:冻结dict

^{pr2}$

它来自here。在

之所以会出现这个错误,是因为您使用了一个“unshable”值(dict)作为字典键。在

例如:

{dic():1}

会给出同样的错误。在

字典不能用于键,因为它们是可变的。允许可变键会对字典造成严重破坏,因为它不知道键是何时更改的,因此无法进行查找。在

相关问题 更多 >

    热门问题