我是 Python 新手,目前正在学习字典。我将随机值和类型放入字典中。这是让我困惑的地方:
stuff = {True: 1234, 1: 2}
print(stuff[True])
print(len(stuff))
Run Code Online (Sandbox Code Playgroud)
当您运行这段代码时,输出是:
2
1
Run Code Online (Sandbox Code Playgroud)
这是怎样的输出?不应该print(stuff[True])输出1234和print(len(stuff))正在输出吗2?我可能会遗漏一些非常明显的东西,但是有人可以解释一下发生了什么吗?
尽管 python 是动态类型的,但在字典中使用异构键类型被认为是一种不好的做法。
运行{True: 'a', 1: 'b', 1.0: 'c'}实际上会映射到{True: 'c'},
这是因为1==1.0和1==True,因而它们具有相同性hash。
最终结果是,将使用第一个键,并更新最后一个值。
True如果您出于某种原因想要分开1,也可以使用它们的类型作为键(例如(x, type(x)))
{(True, type(True)): 'a',(1, type(1)): 'b', (1.0, type(1.0)): 'c'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
517 次 |
| 最近记录: |