【发布时间】:2013-11-20 00:09:56
【问题描述】:
如果我写:
d = { 0:'a', 1:'b' }
d[False] = 'c'
d[True] = 'd'
print(d)
我明白了:
{ 0:'c', 1:'d' }
为什么将它们强制转换为整数?它反过来做同样的事情。
d = {False:'a', True:'b'}
d[0] = 'c'
d[1] = 'd'
print(d)
输出是:
{False:'c', True: 'd'}
可以禁用吗?是bug吗?
【问题讨论】:
-
请注意
isinstance(True, int)返回True。如果我没记错的话,布尔值只是int的特殊子类。 -
是的,
True.__class__.__base__是<type 'int'>。 -
@Ashwini Chaudhari:有关真假的定义,请参见此处:docs.python.org/3/reference/expressions.html#booleans
-
@Humbalan 我想我很清楚他们的意思。
标签: python python-3.x dictionary