我正在嘗試創建一個非常基本的逆指數。即逆指數理解
函數inverseIndex
應該輸入逗號分隔的字符串,然後返回它們所屬的文檔的索引集合。 如:inverseIndex("Hi Dude","Dude","ok Dude")
==>{"Hi":{0}, "Dude":{0,1,2},"ok",{3}}
當我從Java是 - 使用Javascript的背景下,我寫的是這樣的Python沒有理解:
def inverseIndex(strlist):
strDict = {}
listOfStrings = list(enumerate(strlist))
allKeyWords = set(sum([y.split() for (x,y) in listOfStrings],[]))
strDict = {};
for i in allKeyWords :
setStr = set();
for j in listOfStrings:
if(j[1].find(i)):
setStr.add(j[0])
strDict[i] = setStr;
return strDict
這裏的東西我想:
strDict = {}
listOfStrings = list(enumerate(strlist))
# get all the key words segregated in a set so we dont have duplicates.
allKeyWords = set(sum([y.split() for (x, y) in listOfStrings], []))
print(allKeyWords)
return {x: y for x in allKeyWords for (y, z) in listOfStrings if z.find(x) != -1}
這看起來工作正常。但是,我無法用理解書寫它。
此外,我正在尋找一種不使用itertools
的方法,如果有的話。
您沒有使用'itertools'。另外,你有什麼嘗試使用理解? – Marcin
我已經試過這樣: 'strDict = {} listOfStrings =列表(枚舉(strlist)) #獲取所有關鍵詞的設置,所以我們不要有重複的分離。 (allKeywords) return {x:y for allKeyWords for(x,y)for(y,z)(allKeywords)在listOfStrings如果z.find(X)!= -1}' 但正在發生的事情是,這是獲得創建越來越replaced.Also設定的,我不希望使用itertools呢。 – abhididdigi
更新你的問題。 – Marcin