我想从列表中创建一个集合,以便在运行时将项目插入其中。我正在尝试这种方式。
l=[input().split()]
s=set(l)
出现错误 TypeError:无法散列的类型:“列表”
答案 0 :(得分:3)
input().split()
已经为您提供了一个列表,您无需将其包装到另一个列表中
l=input().split()
s=set(l)
print(s)
输出将为
1 2 3 1 2 3
{'2', '3', '1'}
您无法通过将列表强制转换为集合来将列表转换为集合,这是因为set要求提供可选的iterable
参数,所以集合的元素必须是可哈希的。 br />
对于列表而言,这是适用的,因为可迭代的元素integer
是可哈希的,但对于列表的列表而言,由于迭代的元素,所以列表不可哈希的
从文档中:https://docs.python.org/3/glossary.html#term-hashable
所有Python不变的内置对象都是可哈希的;可变容器(例如列表或字典)不是。
In [36]: set([1,2,3])
Out[36]: {1, 2, 3}
In [37]: set([[1,2,3]])
TypeError: unhashable type: 'list'