Adding the number 1 to a set has no effect
>>> 1 == True
True
I believe your problem is that 1
and True
are the same value, so 1 is "already in the set".
>>> st
{'a', True, 'Vanilla'}
>>> 1 in st
True
In mathematical operations True
is itself treated as 1
:
>>> 5 + True
6
>>> True * 2
2
>>> 3. / (True + True)
1.5
Though True is a bool and 1 is an int:
>>> type(True)
<class 'bool'>
>>> type(1)
<class 'int'>
Because 1 in st
returns True, I think you shouldn't have any problems with it. It is a very strange result though. If you're interested in further reading, @Lattyware points to PEP 285 which explains this issue in depth.
1
is equivalent to True
as 1 == True
returns true. As a result the insertion of 1
is rejected as a set cannot have duplicates.
I believe, though I'm not certain, that because hash(1) == hash(True)
and also 1 == True
that they are considered the same elements by the set
. I don't believe that should be the case, as 1 is True
is False
, but I believe it explains why you can't add it.