基本上,我首先将字典放入列表中,然后在该列表中取出 6 个键。我还让用户输入一些值。现在我想把键和值放回另一个字典。我试过把它放在普通的字典格式中,例如:eliminate1 = {newcouple1:Couple01,newcouple2:Couple02,newcouple3:Couple03,newcouple4:Couple04}import operatorfrom operator import itemgettereliminate1 = {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'
2 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
Lists
是不可散列的,因为它们是可变的。你能想象如果 adictionary
key
被分配给 a value
,然后它key
被改变了吗?这将是一场噩梦。
转换lists
成tuples
使它们可散列
红颜莎娜
TA贡献1842条经验 获得超12个赞
为什么字典这么快?
因为,当您查找某些内容时,python 不会查找该对象。相反,它为每个对象分配一个整数(哈希值),然后搜索该整数。
但是,仅当您将其插入字典时才会发生这种情况。如果对象的值稍后发生变化,则哈希值不会,字典将无法找到该对象。
因此,您不能将可变对象放入字典中。对于列表,最简单的解决方案是将其转换为元组,例如,而不是
lst = [1, 2, 3]
x = { lst: "hello" }
写
lst = [1, 2, 3]
x = { tuple(lst): "hello" }
添加回答
举报
0/150
提交
取消