unhashable异常问题

文章讨论了Python中关于全局变量声明、列表生成式中变量的作用域、以及集合对可哈希元素的要求。指出Python中list和dict不能作为dict的key,因为它们不可哈希,而Javamap的key类型似乎没有这个限制。同时提到元组中含有列表也不适合做dictkey.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

​​​​​​​

 解析:A选项,变量b属于全局变量,所以应该使用global声明而不是nonlocal;B选项,可以使用_作为占位符,所以B选项不会报错;C选项,python3.x中,使用列表生成式,中间变量b在生成列表后被销毁,因此再次使用变量b会报错;D选项,集合元素不能是列表这类不可散列对象,因此会报错。

拓展:

D:报TypeError: unhashable type: 'list'错

list 不使用 hash 值进行索引,故其对所存储元素没有可哈希的要求;set / dict 使用 hash 值进行索引,也即其要求欲存储的元素有可哈希的要求。Python不支持dict的key为list或dict类型,因为list和dict类型是unhashable(不可哈希)的。

(但是貌似java中对于map的key没有这种强制性要求,试了一下可以使用List作为map的key)

补充:元组中含有列表也不能作为dict的key(因为列表值可能会变,要保证其unhashable性)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值