Jam*_*esT 2 syntax syntax-error
所以我使用以下代码片段作为更大项目的一部分,
with open(file) as fin:
rows = ( line.split() for line in fin )
d = { row[0]:row[1:] for row in rows }
Run Code Online (Sandbox Code Playgroud)
对于制表符分隔的输入,file.它在我的个人计算机上运行良好,但当我将它移动到共享计算集群时,它不喜欢第3行,d = { row[0]:row[1:] for row in rows }.我一直试图找出原因.
我唯一能想到的就是Python版本的差异.我正在运行2.7.3,共享集群运行2.6.1,但这似乎不太合理 - 我是否错过了一些非常明显的东西?我感谢你们的任何建议.
这是错误的文本(在集群上的Python 2.6.1中),
File "Alphabet.py", line 22
d = { row[0]:row[1:] for row in rows }
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
小智 6
dict理解是Python 2.7中的新功能,请参阅PEP 274 http://www.python.org/dev/peps/pep-0274/
由此:
>>> dict([(i, chr(65+i)) for i in range(4)])
Run Code Online (Sandbox Code Playgroud)
在语义上等同于
>>> {i : chr(65+i) for i in range(4)}
Run Code Online (Sandbox Code Playgroud)
如果您需要在2.7之前与Python兼容,请使用第一个版本.