2

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

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
4

1 回答 1

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

于 2013-02-16T23:13:42.617 回答