Python的版本为3。
在Mac终端机(控制台)中的Python解释器中,我尝试定义了两个Dicts,但发现这些Dicts中的所有第二个元素始终丢失。请参见下面的代码:
>>> dictOne = {True: 'real', 1: 'one', 'two': 2}
>>> dictOne
{True: 'one', 'two': 2}
>>> dictTwo = {1: 'one', True: 'real', 'two': 2}
>>> dictTwo
{1: 'real', 'two': 2}
>>> dictThree = {1: 'one', True: 'real', False: 'fake', 'two': 2}
>>> dictThree
{1: 'real', False: 'fake', 'two': 2}
布尔值和整数值似乎相互干扰。发生什么事了?
答案 0 :(得分:3)
True
和1
对Python来说是同一件事。 (True
基本上是bool(1)
,而True == 1
的值为True
)
Python字典不允许重复的键,True
和1
被视为重复的键。
编辑:Alexandre Juma对此做了很好的解释。本质上,字典键是散列的,hash(1)
和hash(True)
返回相同的内容。