2013-07-14 68 views
0
def makeInverseIndex(strlist): 
return { s:{ j if strlist[i] in strlist[j].split() for j in range(len(strlist)) } 
     for (i,s) in enumerate(strlist) } 

Python中的代碼中的語法錯誤是什麼?無法找到代碼中的語法錯誤?

+0

您實際上並不需要'i'; 'strlist [i]'可以用's'替換,所以你可以放下'enumerate'並且在外部理解中遍歷'strlist'。 – user2357112

+0

類似的,你可以用枚舉來替換range-len,如果在s2.split()中爲s中的s,生成'{s:{i for i,s2 in enumerate(strlist)')。 – user2357112

回答

5

您不能在for的左邊有一個if語句,除非您還有一個else零件(三元運算符)。您需要將if strlist[i] in strlist[j].split()向右移動,

def makeInverseIndex(strlist): 
    return {s:{j for j in range(len(strlist)) if strlist[i] in strlist[j].split()} 
      for (i,s) in enumerate(strlist)}