不可散列的类型:“列表”

基本上,我首先将字典放入列表中,然后在该列表中取出 6 个键。我还让用户输入一些值。现在我想把键和值放回另一个字典。


我试过把它放在普通的字典格式中,例如:


eliminate1 = {newcouple1:Couple01,newcouple2:Couple02,newcouple3:Couple03,newcouple4:Couple04}


import operator

from operator import itemgetter

eliminate1 = {newcouple1:Couple01,newcouple2:Couple02,newcouple3:Couple03,newcouple4:Couple04}

sorted_eliminate1 = sorted(eliminate1.items(), key=operator.itemgetter(1))

gone = print("These Couples have been eliminated: ",dict(sorted_eliminate[0:2]))

gone1 = dict(sorted_eliminate1[0:2])

remaining01 = print("These are the remaining couples: ",dict(sorted(eliminate1.items(), key = itemgetter(1))[2:]))

remaining1 = dict(sorted(eliminate1.items(), key = itemgetter(1))[2:])

运行代码时出现错误:


eliminate1 = {newcouple1:Couple01,newcouple2:Couple02,newcouple3:Couple03,newcouple4:Couple04}

这是错误: TypeError: unhashable type: 'list'


米琪卡哇伊
浏览 245回答 2
2回答

慕娘9325324

Lists是不可散列的,因为它们是可变的。你能想象如果 adictionary key被分配给 a value,然后它key被改变了吗?这将是一场噩梦。转换lists成tuples使它们可散列

红颜莎娜

为什么字典这么快?因为,当您查找某些内容时,python 不会查找该对象。相反,它为每个对象分配一个整数(哈希值),然后搜索该整数。但是,仅当您将其插入字典时才会发生这种情况。如果对象的值稍后发生变化,则哈希值不会,字典将无法找到该对象。因此,您不能将可变对象放入字典中。对于列表,最简单的解决方案是将其转换为元组,例如,而不是lst = [1, 2, 3]x = { lst: "hello" }写lst  = [1, 2, 3]x = { tuple(lst): "hello" }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python