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)}

这样,每个子列表都被转换成了不可变的元组,可以被正确地放入集合中。

上一篇 下一篇

猜你喜欢

热点阅读