我的问题很简单。
当我运行时
someSet = {1,2,3,4}
someSet.discard([5])
它给出了错误:
Traceback (most recent call last):
File "File.py", line 2, in <module>
someSet.discard([5])
TypeError: unhashable type: 'list'
就像列表一样,集合也是不可散列的并且不能存储在集合中。 因此,我预计以下代码会生成错误:
someSet = {1,2,3,4}
someSet.discard({5})
但令我惊讶的是,它没有产生任何错误。为什么会这样呢?这是否意味着我收到列表错误,因为除了不可散列之外还有其他原因导致了错误?如果是的话,那是什么东西?
最佳答案
有一个weird special case如果您将另一个集合传递给 set.remove
、set.discard
或 x in set
,则该集合会默默地转换为卡住集合。
Note, the elem argument to the
__contains__()
,remove()
, anddiscard()
methods may be a set. To support searching for an equivalent frozenset, a temporary one is created from elem.
关于python - 为什么在 Python 中将集合传递给 set.discard 时不会抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75105035/