首页 > 编程语言 > 详细

python set add 导致问题 TypeError: unhashable type: 'list'

时间:2016-07-23 00:35:31      阅读:573      评论:0      收藏:0      [点我收藏+]

 问题复现

>>> a = set()
>>> b = set()

>>> b.add(1)
>>> a.add(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: set
>>> c = list(b) >>> a.add(c) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: list

>>> tuple(b) (1,)
>>> a.add(b)
>>>

现象:往set对象里add列表、集合对象时,时提示他们是不可hash的,而对于tuple类型就可以。

原因:set里面的对象是hash存储(所以是无序的),对于python万物都是对象,如果存储一个list对象,而后改变了list对象,那set中刚才存储的值的hash就变了。

结论:set是hash存储,必须存储不变的对象,例如字符串、数字、元组等。

python set add 导致问题 TypeError: unhashable type: 'list'

原文:http://www.cnblogs.com/kaituorensheng/p/5694555.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!