2013-02-16 27 views
2

所以我用下面的代碼段作爲一個更大的項目的一部分,Python 2.6.1和2.7.3之間的語法差異?

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

已修改,添加錯誤文本 – JamesT 2013-02-16 22:16:45

回答

6

字典的理解是新的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兼容,請使用第一個版本。

+0

d'oh!你是完全正確的。我想這會是這樣的 - 我仍然很不喜歡這個。現在它工作得很好 - 謝謝! – JamesT 2013-02-17 02:30:24