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

时间:2013-02-16 21:58:17

标签: syntax syntax-error

所以我使用以下代码片段作为更大项目的一部分,

with open(file) as fin:
    rows = ( line.split() for line in fin )
    d = { row[0]:row[1:] for row in rows }

对于制表符分隔的输入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

1 个答案:

答案 0 :(得分: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)])

在语义上等同于

>>> {i : chr(65+i) for i in range(4)}

如果您需要在2.7之前与Python兼容,请使用第一个版本。