0

非常に基本的な逆インデックスを作成しようとしています。つまり、

関数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また、使わない方法があれば探しています。

4

1 に答える 1