用Python定义的Dict中的第二个元素不断丢失

时间:2018-12-05 02:09:17

标签: python

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}

布尔值和整数值似乎相互干扰。发生什么事了?

1 个答案:

答案 0 :(得分:3)

True1对Python来说是同一件事。 (True基本上是bool(1),而True == 1的值为True

Python字典不允许重复的键,True1被视为重复的键。

编辑:Alexandre Juma对此做了很好的解释。本质上,字典键是散列的,hash(1)hash(True)返回相同的内容。