当我执行以下操作时:
我收到的输出是:
>>> d={True:'yes',1:'no',1.0:'maybe'}
>>> d
我收到的输出是:
>>> {True:'maybe'}
不仅我的一些键被删除了,而且它们所持有的值也发生了改变。
为什么True比其他bool键具有优先级?
>>> d={True:'yes',1:'no',1.0:'maybe'}
>>> d
>>> {True:'maybe'}
不仅我的一些键被删除了,而且它们所持有的值也发生了改变。
为什么True比其他bool键具有优先级?
hash(True)
、hash(1)
和hash(1.0)
),因此它们都对应于字典中的同一插槽。最后设置的值胜出——在这种情况下是'maybe'。True == 1
。 - jwilnerd = {}; d[True] = 'yes'; d[1] = 'no'; d[1.0] = 'maybe'
。它会保留第一个键(因为它们都相等),但总是进行赋值操作,所以你会得到最后一个值。 - babbageclunk