【发布时间】:2017-10-03 09:08:47
【问题描述】:
stu_dict = [{raw_input():int(raw_input())} for i in xrange(1)]
print stu_dict
对于上面的代码,输入应该如下:
4 和r 打印为[{'r': 4}],这意味着它以4 作为值,r 作为键!
但是对于下面的代码,它是相反的,第一个输入将分配给键,第二个输入将分配给值
a = [[raw_input(), float(raw_input())] for i in xrange(int(raw_input()))]
print a
为什么会这样?
【问题讨论】:
-
在从左到右评估
dict、lists 中的键之前评估值 -
@Chris_Rands 不。不在 Python >= 3.5 中。根据规范,键应该在值之前评估,但是有一个突出的错误:bugs.python.org/issue11205
-
@juanpa.arrivillaga 他们正在使用 2.7
-
@Chris_Rands 对,它是 2.7 中的一个 bug。根据规范,它应该是从左到右的。
-
@juanpa.arrivillaga 我最初在
dict文字和理解语法之间混淆了,其中值在键之前评估,即使在 Python 3 中也是如此,例如{input(): input() for i in range(1)}
标签: python python-2.7 list-comprehension