为什么Python的Set集合中存储的True输出时没有显示?
问题原因
- Python的布尔类型
bool是整数类型int的子类,True的底层整数值为1,False的底层整数值为0,因此True == 1的运算结果为True,且两者的哈希值hash(True)和hash(1)完全相等。 - Python集合的去重规则为:若两个元素的哈希值相等,且用
==比较返回True,就会被判定为同一个元素,仅会保留集合中先被写入的那一个。
你给出的代码中,集合初始化时1的写入顺序早于True,当解析到True时会被判定为和已存在的1重复,因此被自动剔除,不会出现在最终输出结果中。
你可以调整元素写入顺序验证规则:如果把
True放到1前面,代码如下:mySet = {True,"2",3.0,1} print("Set: " , mySet)此时输出结果为
Set: {True, 3.0, '2'},反过来是1被去重。
内容的提问来源于stack exchange,提问作者nicomp
相关产品推荐
相关产品推荐

