【问题标题】:TypeError: 'NoneType' object does not support item assignmentTypeError:“NoneType”对象不支持项目分配
【发布时间】:2016-01-27 18:00:48
【问题描述】:

我正在尝试使用以下 Code 解析 GraphMl 文件

我得到以下error

您能帮我解决这个问题吗?

【问题讨论】:

    标签: python-2.7 graphml pygraph


    【解决方案1】:

    注意:这是我第一次遇到pygraphml

    问题似乎是您的图形定义文件 (test.graphml) 中的逻辑错误。最重要的是pygraphml2.0,似乎不能很好地处理此类错误:

    正如所指出的,错误:TypeError: 'NoneType' object does not support item assignment,来自 graphml_parser.py114:

    e[attr.getAttribute("key")] = attr.firstChild.data
    

    e 是/应该是 pygraphml.edge.Edge 类型的对象,并在同一文件中的第 110 行初始化:

    e = g.add_edge_by_label(source, dest)
    

    问题在于eNone,因此出现了错误。 g(实例化e)是pygraphml.graph.Graph 类型的对象。转到 graph.pyadd_edge_by_label 定义在 147 行:

    def add_edge_by_label(self, label1, label2):
        """
        """
    
        n1 = None
        n2 = None
    
        for n in self._nodes:
            if n['label'] == label1:
                n1 = n
            if n['label'] == label2:
                n2 = n
    
        if n1 and n2:
            return self.add_edge(n1, n2)
        else:
            return
    

    所以,您遇到了最后一个 return 语句,这意味着在 test.graphml 中,您(至少)有一个边缘有一个标签(或者可能两者都有),但事实并非如此' t 属于图的任何节点。

    显然 pygraphml 存在问题(我认为这是一个错误),如果 Graph.add_edge_by_label 可以返回 None,则应该执行 None 测试 GraphMLParser.parse(可能在其他地方也是如此) )。

    HTH(如果没有,你可以把图表文件发给我看看)。

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 2020-10-30
      • 1970-01-01
      • 2016-07-31
      • 2014-02-18
      • 2017-03-26
      • 2021-08-05
      • 1970-01-01
      相关资源
      最近更新 更多