True以及python字典中计算为相同的1和1.0
有人能解释python字典的这种行为吗True以及python字典中计算为相同的1和1.0,python,dictionary,boolean,Python,Dictionary,Boolean,有人能解释python字典的这种行为吗 d = {} d[True] = 'Magic' d[1] = 'Cool' d[1.0] = 'Hello' print(d) # {True: 'Hello'} 为什么它不打印所有其他(键、值)对 为什么True、1和1.0被评估为相同?三项1、1.0、True中的值相同(它等于1)。如果没有冲突,python会将其用作字典的键。当1==1.0==True也是True时,没有冲突 下面是有关python字典的详细信息。新的实现是按照这些思路进行的(
d = {}
d[True] = 'Magic'
d[1] = 'Cool'
d[1.0] = 'Hello'
print(d)
# {True: 'Hello'}
为什么它不打印所有其他(键、值)对
为什么True、1和1.0被评估为相同?三项1、1.0、True
中的值相同(它等于1
)。如果没有冲突,python会将其用作字典的键。当1==1.0==True
也是True
时,没有冲突
下面是有关python字典的详细信息。新的实现是按照这些思路进行的(但保留了顺序)。三项1,1.0,True
的结果是相同的(它等于1
)。如果没有冲突,python会将其用作字典的键。当1==1.0==True
也是True
时,没有冲突
下面是有关python字典的详细信息。新的实现是按照这些思路进行的(但保留了顺序)。是!!散列是相等的,值是相等的。您可以简单地尝试:
True。bool
是int
的一个子类,True==1
和False==0
是经过深思熟虑的。是的!!散列是相等的,值是相等的。你可以简单地尝试:True。bool
是int
的一个子类,True==1
和False==0
是经过深思熟虑的。@Aran Fey,但是1.0部分没有在那里解决,对吗?@Jean François Fabre No,但这真的必要吗?答案很好地解释了集合(和dict)消除了散列和比较相等的项。那么,我认为这是一个必要的重复。因为可能存在混淆,因为bool
是int
的子类,而float
不是。。是的,这是一个副本,但我不打算去争取删除它。有用的欺骗。该死的,我在结束后编辑:)@Aran Fey,但1.0部分没有在那里解决,对吗?@Jean-Françoisfar没有,但这真的有必要吗?答案很好地解释了集合(和dict)消除了散列和比较相等的项。那么,我认为这是一个必要的重复。因为可能存在混淆,因为bool
是int
的子类,而float
不是。。是的,这是一个副本,但我不打算去争取删除它。有用的欺骗。该死,我在结束后编辑:)