所以我使用以下代码片段作为更大项目的一部分,
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
答案 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兼容,请使用第一个版本。