我刚刚开始研究Python中的set数据类型。由于某些原因,每当我将布尔值True添加到一个集合中时,它就不会出现。但是,如果我将False添加到一个集合中,它将成为集合的一个元素。当我在谷歌上搜索这个问题时,我很震惊,什么都没有出现。
example1 = {1, 2, 7, False}
example2 = {7, 2, 4, 1, True}
print(example1)
print(example2)
输出为:
{False, 1, 2, 7}
{1, 2, 4, 7}
发布于 2018-07-25 03:04:36
因为在Python 1 == True
(和hash(1) == hash(True)
)中,集合中已经有1了。
想象一下这个例子:
example1 = {0, False, None}
example2 = {1, True}
print(example1)
print(example2)
将输出:
{0, None}
{1}
第一个集合有0
和None
,因为是0 == False
而是0 != None
。使用第二个集合1 == True
,因此不会将True
添加到集合中。
发布于 2018-07-25 12:15:38
False和True分别等于0和1。它们是不同的实体,但两个相等的值不能都在一个集合中。这显然是不受欢迎的行为,但还不清楚它是否可以修复,并且仍然允许与布尔值相乘以按照文档说明的方式工作。
IPython 6.2.1 -- An enhanced Interactive Python.
1 is True
Out[1]: False
{1,True}
Out[2]: {1}
{0,False}
Out[3]: {0}
{False, 0}
Out[4]: {False}
{True, 1}
Out[5]: {True}
请注意,根据将它们放入集合的顺序,如果True已经在集合中,则1将不在集合中,如果1已经在集合中,则True将不在集合中。
https://stackoverflow.com/questions/51505826
复制相似问题