将数组添加到字典TypeError:unhashable类型:'list'

sha*_*nky 2 python

我无法将数组[3,5]添加到dictionary linedict = {}.我查看了Python上提到的解决方案:TypeError:unhashable类型:'list' 但仍然出现错误(TypeError:unhashable type:'list')

    links = [links[i:i+2] for i in range(0, len(links), 2)]

    for i in range(0, len(links), 1):
        print links[i]

        if links[i] not in linedict:#on this linme
          linedict[links[i]].append( prob) 
Run Code Online (Sandbox Code Playgroud)

我想创建[3,5]值0.03的字典.

Mar*_*som 5

你已经打印了links[i],所以它应该引起你的注意,links列表的每个元素也是一个列表.

字典不能包含列表作为键,因为字典基于哈希表,并且列表不能进行哈希处理.虽然元组可以进行哈希处理,但它们与列表非常相似,因此您可以尝试将列表转换为元组.

此外,你不能附加到尚不存在的东西.最直接的方法是分别处理这两种情况,假设您想要捕获每个匹配并将其添加到列表中.您还可以使用可以defaultdict自动处理首次添加的a,如评论中所建议的那样.

if tuple(links[i]) not in linedict:
    linedict[tuple(links[i])] = [prob]
else:
    linedict[tuple(links[i])].append(prob) 
Run Code Online (Sandbox Code Playgroud)