我的任务是创建一个过程,该过程接收字符串列表并返回一个字典,该字典将所有输入字符串中的每个单词映射到由该单词出现的所有字符串的字符串编号组成的集合。在实际问题中,字符串是第一个索引为1的文本段落
下面是一个输入示例->;输出:
L=['abcde','abbcc','deeff']
makeInverseIndex(L)——>;{'a':[1,2],'b':[1,2],'c':[1,2],'d':[1,3],'e':[1,3],'f':[3]}
我有两个可行的解决方案:
def makeInverseIndex(strlist):
InvInd = {}
for i, d in enumerate(strlist):
for w in d.split():
if w not in InvInd:
InvInd[w] = [i+1]
elif w in d and i+1 not in InvInd[w]:
InvInd[w].append(i+1)
return InvInd
def makeInverseIndex2(strlist): return {x:[d+1 for d in range(len(strlist)) if x in strlist[d]]
for w in strlist for x in w.split()}
我的问题是,是否可以使用枚举以任何方式简化听写理解。教科书中的问题暗示我应该使用enumerate,尽管我不知道如何实现它
这是我最好的尝试,虽然我知道这是错误的,因为分配错误 也就是说,w在列表理解中被分配,而在行中未被识别:
for x in w.split()
def makeInverseIndex3(strlist): return {x:[i for i, w in enumerate(strlist) if x in strlist[i]]
for x in w.split()}
我感觉很接近,我相信解决办法可能是显而易见的,但我就是搞不清楚
谢谢
输出:
将词典理解与枚举一起使用
或者我们可以使用start=1而不是d+1的枚举
输出
这对我很有用:
输出:
相关问题 更多 >
编程相关推荐