我无法将整数1
添加到现有集合中。在交互式shell中,我正在做的是:
>>> st = {'a', True, 'Vanilla'}
>>> st
{'a', True, 'Vanilla'}
>>> st.add(1)
>>> st
{'a', True, 'Vanilla'} # Here's the problem; there's no 1, but anything else works
>>> st.add(2)
>>> st
{'a', True, 'Vanilla', 2}
这个问题是两个月前贴出来的,但我相信被误解了。 我使用的是python3.2.3。在
1
等效于True
,因为1 == True
返回true。因此,1
的插入被拒绝,因为集合不能有重复项。在我相信您的问题是}是相同的值,所以1是“已经在集合中”。在
^{pr2}$1
和{在数学运算中,
True
本身被视为1
:虽然True是bool,1是int:
因为
1 in st
返回True,所以我认为您应该不会有任何问题。但这是一个非常奇怪的结果。如果您对进一步阅读感兴趣,@Lattyware指向PEP 285,它对这个问题进行了深入的解释。在我相信,尽管我不确定,因为}它们被{}视为相同的元素。我不认为应该是这样,因为},但我相信这解释了为什么不能添加它。在
hash(1) == hash(True)
和{1 is True
是{相关问题 更多 >
编程相关推荐