My question is quite simple.
When I run
someSet = {1,2,3,4}
someSet.discard([5])
It gives the error:
Traceback (most recent call last):
File "File.py", line 2, in <module>
someSet.discard([5])
TypeError: unhashable type: 'list'
Just like list, sets are also unhashable and can't be stored in a set. So, I expect the following code to generate an error:
someSet = {1,2,3,4}
someSet.discard({5})
But to my surprise, it did not generate any error. Why is it so? Does this mean that I am getting an error for list as there something other than it being unhashable which gives rise to the error? If yes, then what is that thing?
There's aweird special case where if you pass another set to set.remove
, set.discard
, or x in set
, the set is silently converted to a frozenset.
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 .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.