【问题标题】:Typeerror:list indices must be integers, not tuple类型错误:列表索引必须是整数,而不是元组
【发布时间】: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


    【解决方案1】:

    您遇到的错误与triples 函数无关。这行本身就是错误的:

    list(movie_graph.triples(("blade_runner","directed_by",None))) [("blade_runner","directed_by","ridle_scott")]
    

    list(...) 返回一个列表,随后的方括号[...] 正在尝试为该列表建立索引。列表索引必须是整数,而不是 ("blade_runner","directed_by","ridle_scott"),它是一个元组,因此您会看到错误。

    很难确切地看到您想要实现的目标,但这就是您看到该错误的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-11
      • 2015-07-11
      • 1970-01-01
      • 2023-02-19
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      相关资源
      最近更新 更多