Python数据使用set对数据去重报错TypeError: u
2023-12-27 本文已影响0人
ButICare_b72d
这个错误信息“TypeError: unhashable type: 'list'”表明你试图将一个列表(list)放入一个集合(set)中,但列表是可变的,所以它们不能被用作集合的键。
具体来说,集合中的元素必须是不可变的,这样才能保证集合的唯一性。而列表是可变的,这意味着如果你改变了一个列表,它仍然会被视为同一个对象。
例如:
python复制代码
my_list = [1,2,3]
my_set =set([my_list])
# 修改列表
my_list[0] =100
# 打印集合中的元素
print(my_set)# 输出:{[100, 2, 3]}
如上所示,尽管我们改变了my_list,但它在集合my_set中仍然被视为同一个对象。这是由于列表的id没有改变。
要解决这个问题,你需要确保放入集合中的元素是不可变的。例如,如果你想将列表中的值放入集合中,你可以这样做:
python复制代码
values = [[1,2,3], [2,3,4], [1,2,3]]
values1 =set(tuple(x) for x in values)# 将列表转换为元组后再放入集合中
print(values1)# 输出:{(1, 2, 3), (2, 3, 4)}
这样,每个子列表都被转换成了不可变的元组,可以被正确地放入集合中。