python set add 導致問題 TypeError: unhashable type: 'list'


 問題復現

>>> 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存儲,必須存儲不變的對象,例如字符串、數字、元組等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM