【发布时间】:2018-01-21 07:41:44
【问题描述】:
我是 Python 新手,目前正在学习字典。我将随机值和类型放入字典中。这让我感到困惑:
stuff = {True: 1234, 1: 2}
print(stuff[True])
print(len(stuff))
当你运行这段代码时,输出是:
2
1
这是怎么输出的? print(stuff[True])不应该输出1234和print(len(stuff))输出2吗?我可能遗漏了一些非常明显的东西,但是有人可以解释发生了什么吗?
【问题讨论】:
-
True == 1;bool是int的子类型。 -
@Ryan 所以Python实际上将
{True: 1234, 1: 2}解释为{1: 1234, 1: 2}?我想这解释了len问题。但是,为什么它选择2而不是1234,尤其是1234是第一位的? -
如果你有多个相等的键,最后一个是使用其值的那个。你可以把它想象成
{1: 1234, 1: 2},但它不是真的。True和1是不同的,但与==比较是相等的,并且字典键会根据该相等性进行比较。* -
@Ryan ohhh 好的,我现在明白了,我刚刚调试了我的程序。你是对的,
1: 2覆盖了1: 1234,所以当解释器读完字典时,它已经把它读成了stuff = {1: 2}。这解释了这两个问题。感谢您的宝贵时间。 -
@parrot15,您收到想要的答案了吗?
标签: python dictionary