一维的list去重可以用set(list),但是二维的list转set就会报错 unhashable type: ‘list’
原因是set传进来的是不可哈希的变量
Python中那么哪些是可哈希元素?哪些是不可哈希元素?
可哈希的元素有:int、float、str、tuple
不可哈希的元素有:list、set、dict
为什么 list 是不可哈希的,而 tuple 是可哈希的
(1)因为 list 是可变的在它的生命期内,你可以在任意时间改变其内的元素值。
(2)所谓元素可不可哈希,意味着是否使用 hash 进行索引
(3)list 不使用 hash 进行元素的索引,自然它对存储的元素有可哈希的要求;而 set 使用 hash 值进行索引
正确做法:将list转成tuple,这样就可以用set去重。
dic = list(set([tuple(t) for t in dic]))
dic = [list(v) for v in dic]
本文介绍了如何在一维和二维列表中实现元素去重,并解释了为何list不能直接用于set的原因。通过转换list为tuple,可以有效利用set进行去重。
1333

被折叠的 条评论
为什么被折叠?



