【发布时间】:2016-01-08 03:23:21
【问题描述】:
我的指数类型有误。 我尝试运行它已编译的代码,但您可以在下面的 Python IDLE 中看到错误。
代码:
def triples(self, (sub, pred, obj)):
#Generator over the triple store.
#Returns triples that match the given triple pattern.
# check which terms are present in order to use the correct index:
try:
if sub != None:
if pred != None:
# sub pred obj
if obj != None:
if obj in self._spo[sub][pred]: yield (sub, pred, obj)
# sub pred None
else:
for retObj in self._spo[sub][pred]: yield (sub, pred, retObj)
else:
# sub None obj
if obj != None:
for retPred in self._osp[obj][sub]: yield (sub, retPred, obj)
# sub None None
else:
for retPred, objSet in self._spo[sub].items():
for retObj in objSet:
yield (sub, retPred, retObj)
else:
if pred != None:
# None pred obj
if obj != None:
for retSub in self._pos[pred][obj]:
yield (retSub, pred, obj)
# None pred None
else:
for retObj, subSet in self._pos[pred].items():
for retSub in subSet:
yield (retSub, pred, retObj)
else:
# None None obj
if obj != None:
for retSub, predSet in self._osp[obj].items():
for retPred in predSet:
yield (retSub, retPred, obj)
# None None None
else:
for retSub, predSet in self._spo.items():
for retPred, objSet in predSet.items():
for retObj in objSet:
yield (retSub, retPred, retObj)
# KeyErrors occur if a query term wasn't in the index, so we yield nothing:
except KeyError:
pass
在 Python IDLE 中执行后出现以下错误。我想到的错误是 Python IDLE 中的索引。
list(movie_graph.triples(("blade_runner","directed_by",None))) [("blade_runner","directed_by","ridle_scott")]
Traceback(最近一次调用最后一次) 文件“”,第 1 行,在 list(movie_graph.triples(("blade_runner","directed_by",None)))[("blade_runner","directed_by","ridle_scott")] TypeError:列表索引必须是整数,而不是元组
【问题讨论】:
标签: python runtime-error