【问题标题】:How Python dictionaries are executed?Python 字典是如何执行的?
【发布时间】:2017-09-08 07:27:11
【问题描述】:
如果我运行以下代码:
a={}
a[input("key: ")] = input("value: ")
解释器首先提示我value input,然后是key input。
这背后的原因是什么?
【问题讨论】:
-
来自 Python 文档中的 Simple Statements:“赋值语句计算表达式列表(请记住,这可以是单个表达式或逗号分隔的列表,后者产生一个元组)并将每个目标列表的单个结果对象,从左到右。”
-
标签:
python
dictionary
input
python-internals
【解决方案1】:
通常无法保证内部表达式的顺序。在您的情况下发生的情况是,解释器首先找出需要放入字典的内容,然后找出应该将其放入的位置。从解释器的角度来看,这是更优化的顺序。
因为在 input('value') 调用期间可能会发生某些事情,例如异常,或者您可以简单地终止您的程序。那么,在你真正拥有它之前,为什么还要费心去寻找把那个值放在哪里呢。
如果您确实关心订单,您应该执行以下操作:
key = input('key')
a[key] = input('value')
【解决方案2】:
来自docs:
Python 从左到右计算表达式。请注意,虽然
评估分配,右侧在评估之前评估
左侧。