typeError: unhashable type: 'list’问题分析

list常用去重方法
在python中使用list存储数据时有时候需要list中的数据不能重复,这样就需要用到去重操作,因为set是会自动把重复的内容去掉的,所以常用的简单去重方法是先将list转为set,然后再转为list。如:

a = [1,4,8,2,4,1]
a = list(set(a))
print(a)
输出的结果为:[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是不能哈希的。这是因为调用 set() 来转为集合类型时,传递进来的参数必须是可哈希的(hashable),而list是可变类型无法进行哈希。特意查了查资料,发现可哈希的元素有:int、float、str、tuple;不可哈希的元素有:list、set、dict。

解决方案
转为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经过去重操作后得到的结果。
————————————————
版权声明:本文为CSDN博主「weixin_44118318」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44118318/article/details/85254817

发布了447 篇原创文章 · 获赞 153 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/ningyanggege/article/details/104916906