码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-07-23 00:37:49      阅读:293      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!