Python-为什么我的新联合集不返回值:True

Python-为什么我的新联合集不返回值:True,python,int,set,boolean,Python,Int,Set,Boolean,真的很好奇,浏览了一些基本概念,并寻求一些您的友好帮助 我真的很想知道为什么我的新统一/联合/加入的集合没有像预期的那样返回我的真值,而是返回了我的假值 我有以下代码: mySet1 = {1, 2, "Hello} mySet2 = {"World!", 2.5, True, False} myUnion = mySet1.union(mySet2) print (myUnion) 提前感谢您的帮助:这是因为True是1作为整数 True和1是相同的 如果从mySet1中删除1,将显

真的很好奇,浏览了一些基本概念,并寻求一些您的友好帮助

我真的很想知道为什么我的新统一/联合/加入的集合没有像预期的那样返回我的真值,而是返回了我的假值

我有以下代码:

mySet1 = {1, 2, "Hello}

mySet2 = {"World!", 2.5, True, False}

myUnion = mySet1.union(mySet2)

print (myUnion)


提前感谢您的帮助:

这是因为True是1作为整数

True和1是相同的


如果从mySet1中删除1,将显示True。

这与True和False的基本定义有关

>>> {True, 1}
{True}
>>> {False, 0}
{False}
请注意,这很好,因为您仍然可以测试这些条目的存在:

>>> 1 in {True, 1}
True
>>> 0 in {False, 0}
True

>>> 1 in {True}
True
>>> 0 in {False}
True

因为True==1和False==0,注意,issubclassbool,int是True。换句话说,在Python的类层次结构中,布尔对象是整数对象。有些人不喜欢这样,事实上,我个人认为这并不理想,但这主要是出于历史考虑,bool类型在此之前没有被添加,1和0被用作True和False,就像在C中一样,因此bool类型与以前的用法兼容。严格地说,基于散列的容器(如集合)本身并不关心类型。任何散列为相同值并为==返回True的对象都将在基于散列的容器中被视为相同的对象。这很好,谢谢: