Python 2.6.1和2.7.3之间的语法差异?

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兼容,请使用第一个版本.