2013-07-14 39 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)}