如何调试倒排索引?

How Do I Debug Inverted Index?

正在尝试从子集创建倒排索引但未获得适当的 return 值。 return 实验 d1 的值应该只是 [0] 而不是我得到了实验和研究的列表。 当我尝试清除新列表时,我得到空列表 return.enter code here

subset={'d1': ['experiment','studi','wing', 'propel', 'slipstream',  'made', 'order', 'determin', 'spanwis',
'distribut','lift', 'increas',  'due','slipstream', 'differ'],'d2':['studi','high-spe','viscou', 'flow', 
'past', 'two-dimension', 'bodi','usual','necessari','consid', 'curv', 'shock', 'wave', 'emit', 'nose', 
'lead', 'studi', 'bodi','.','consequ']}

set_set =['experiment','studi']

new=[]
inv_index={}
final={}
for word in set_set:
    for key, values in subset.items():
        for value in values:
            if word == value:
                new.append(values.index(word))
                inv_index[key]=new
        final[word]=inv_index
final

###Output
#{'experiment': {'d1': [0, 1, 0, 0], 'd2': [0, 1, 0, 0]},
 #'studi': {'d1': [0, 1, 0, 0], 'd2': [0, 1, 0, 0]}}

#should be {'experiment':{'d1':[0]},'studi':{'d1':[1],'d2':[0,16]}}
#            

您正在跟踪很多您不需要的东西。还请记住,如果存在重复,index 将不起作用。 index 总是 returns 第一个匹配项的索引。

这就是你所要求的:

subset={'d1': ['experiment','studi','wing', 'propel', 'slipstream',  'made', 'order', 'determin', 'spanwis',
'distribut','lift', 'increas',  'due','slipstream', 'differ'],'d2':['studi','high-spe','viscou', 'flow', 
'past', 'two-dimension', 'bodi','usual','necessari','consid', 'curv', 'shock', 'wave', 'emit', 'nose', 
'lead', 'studi', 'bodi','.','consequ']}

set_set =['experiment','studi']

final={}
for word in set_set:
    final[word] = {}
    for key, values in subset.items():
        found = [idx for idx,value in enumerate(values) if word == value]
        if found:
            final[word][key] = found
print(final)

输出:

{'experiment': {'d1': [0]}, 'studi': {'d1': [1], 'd2': [0, 16]}}