如何调试倒排索引?
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]}}
正在尝试从子集创建倒排索引但未获得适当的 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]}}