typeError: unhashable type: 'list’问题分析
list常用去重方法
在python中使用list存儲數(shù)據(jù)時有時候需要list中的數(shù)據(jù)不能重復,這樣就需要用到去重操作,因為set是會自動把重復的內(nèi)容去掉的,所以常用的簡單去重方法是先將list轉(zhuǎn)為set,然后再轉(zhuǎn)為list。如:
a = [1,4,8,2,4,1]
a = list(set(a))
print(a)
輸出的結(jié)果為:[8, 1, 2, 4]
1
2
3
4
這樣就輕松完成了去重操作。
TypeError: unhashable type: 'list’問題分析
上面的方法固然好用,但是在運行下面代碼是會報錯:
>>> a = [[1,2],3]
>>> a = list(set(a))
Traceback (most recent call last):
? File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
1
2
3
4
5
報錯提示的意思是:list是不能哈希的。這是因為調(diào)用 set() 來轉(zhuǎn)為集合類型時,傳遞進來的參數(shù)必須是可哈希的(hashable),而list是可變類型無法進行哈希。特意查了查資料,發(fā)現(xiàn)可哈希的元素有:int、float、str、tuple;不可哈希的元素有:list、set、dict。
解決方案
轉(zhuǎn)為set的方法行不通,只能另尋辦法,我采用的方式如下:
a = [[1,2],3]
b = []
? ? for i in a:
? ? ? ? if i not in b:
? ? ? ? ? ? b.append(i)
1
2
3
4
5
所以最后列表b就是a經(jīng)過去重操作后得到的結(jié)果。
————————————————
版權(quán)聲明:本文為CSDN博主「weixin_44118318」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_44118318/article/details/85254817
總結(jié)
以上是生活随笔為你收集整理的typeError: unhashable type: 'list’问题分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个电脑多个github、gitlab、
- 下一篇: 邮件头解析=?utf-8?Q?乱码