2014-02-24 155 views
1

我在看別人的代碼,以適應它爲我自己here,我在第44行過這個傳來:Dictionary for ... in ... in it?

scores = {word: tfidf(word, blob, bloblist) for word in blob.words} 

當我嘗試這在Python 2.7.6,我在得到一個語法錯誤單詞for後的空格。爲什麼無效語法和代碼中究竟發生了什麼?

+0

這等同於'字典((文字,TFIDF( word,blob,bloblist))爲blob.words中的單詞)' – michaelmeyer

+2

該代碼適合我。你確定你在Python 2.7上運行過嗎?一個字典理解會在Python 2.6或更早版本中引發SyntaxError,但不會在2.7+中引發。 –

+0

@AshwiniChaudhary我在2.7,但它可能只是一個過時的崇高文本插件 – ZuluDeltaNiner

回答

3

字典理解爲backported only to 2.7 not to 2.6, from 3.1

字典並設置內涵({I:* 2對於i的範圍(3)})。

因此,在Python 2.6當量會,

dict((word, tfidf(word, blob, bloblist)) for word in blob.words) 

但通過列表會稍快,

dict([(word, tfidf(word, blob, bloblist)) for word in blob.words])