• <legend id='yLXZ8'><style id='yLXZ8'><dir id='yLXZ8'><q id='yLXZ8'></q></dir></style></legend>

        <bdo id='yLXZ8'></bdo><ul id='yLXZ8'></ul>
    1. <i id='yLXZ8'><tr id='yLXZ8'><dt id='yLXZ8'><q id='yLXZ8'><span id='yLXZ8'><b id='yLXZ8'><form id='yLXZ8'><ins id='yLXZ8'></ins><ul id='yLXZ8'></ul><sub id='yLXZ8'></sub></form><legend id='yLXZ8'></legend><bdo id='yLXZ8'><pre id='yLXZ8'><center id='yLXZ8'></center></pre></bdo></b><th id='yLXZ8'></th></span></q></dt></tr></i><div id='yLXZ8'><tfoot id='yLXZ8'></tfoot><dl id='yLXZ8'><fieldset id='yLXZ8'></fieldset></dl></div>

      <small id='yLXZ8'></small><noframes id='yLXZ8'>

        <tfoot id='yLXZ8'></tfoot>
      1. 如何向networkx中的边缘添加新属性?

        时间:2023-09-13
        <tfoot id='ncNY6'></tfoot>

          <small id='ncNY6'></small><noframes id='ncNY6'>

            <tbody id='ncNY6'></tbody>

            <bdo id='ncNY6'></bdo><ul id='ncNY6'></ul>

              <legend id='ncNY6'><style id='ncNY6'><dir id='ncNY6'><q id='ncNY6'></q></dir></style></legend>

            • <i id='ncNY6'><tr id='ncNY6'><dt id='ncNY6'><q id='ncNY6'><span id='ncNY6'><b id='ncNY6'><form id='ncNY6'><ins id='ncNY6'></ins><ul id='ncNY6'></ul><sub id='ncNY6'></sub></form><legend id='ncNY6'></legend><bdo id='ncNY6'><pre id='ncNY6'><center id='ncNY6'></center></pre></bdo></b><th id='ncNY6'></th></span></q></dt></tr></i><div id='ncNY6'><tfoot id='ncNY6'></tfoot><dl id='ncNY6'><fieldset id='ncNY6'></fieldset></dl></div>

                1. 本文介绍了如何向networkx中的边缘添加新属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我所拥有的: 在 networkx 中导入的图 G,其节点和边由 gml 文件加载.

                  What I have: a graph G imported in networkx with nodes and edges loaded by gml file.

                  问题:如何为选中的边E添加新属性.

                  Problem: How to add a new attribute to a selected edge E.

                  我想做什么:我想为我的图表的特定边 E 添加一个新属性类型".注意:该边 E 不存在类型"属性.

                  What I want to do: I want to add a new attribute 'type' for a particular edge E of my graph. Attention: the attribute 'type' doesn't exist for this edge E.

                  我的代码是:

                    G.edge[id_source][id_target]['type']= value
                  

                  但是如果我打印 G 的所有边,现在我有 n+1 个边;G 的所有旧边,以及一条新边 p= (id_source, id_target, {'type'= value}).此外,旧边 E(我要修改的边)没有新属性type".

                  But if I print all the edges of G, now I have n+1 edges; all the old edges of G, and a new edge p= (id_source, id_target, {'type'= value}). Furthermore, the old edge E (the one that I want modify) doesn't have the new attribute 'type'.

                  所以我的代码添加了一个新的优势(我不想要).

                  So my code have added a new edge (that I don't want).

                  我想更新旧的添加一个不存在的新属性.

                  I want to update the old one adding a new attribute that doesn't exist.

                  推荐答案

                  你可能有一个 networkx MultiGraph 而不是一个图,在这种情况下,边的属性设置有点棘手.(您可以通过加载节点之间具有多条边的图来获得多重图).您可能会通过分配属性来破坏数据结构G.edge[id_source][id_target]['type']= value 当您需要时G.edge[id_source][id_target][key]['type']= value.

                  You may have a networkx MultiGraph instead of a graph and in that case the attribute setting for edges is a little tricker. (You can get a multigraph by loading a graph with more than one edge between nodes). You may be corrupting the data structure by assigning the attribute G.edge[id_source][id_target]['type']= value when you need G.edge[id_source][id_target][key]['type']= value.

                  以下是 Graphs 和 MultiGraphs 的不同工作方式示例.

                  Here are examples of how it works differently for Graphs and MultiGraphs.

                  对于 Graph 案例属性的工作方式如下:

                  For the Graph case attributes work like this:

                  In [1]: import networkx as nx
                  
                  In [2]: G = nx.Graph()
                  
                  In [3]: G.add_edge(1,2,color='red')
                  
                  In [4]: G.edges(data=True)
                  Out[4]: [(1, 2, {'color': 'red'})]
                  
                  In [5]: G.add_edge(1,2,color='blue')
                  
                  In [6]: G.edges(data=True)
                  Out[6]: [(1, 2, {'color': 'blue'})]
                  
                  In [7]: G[1][2]
                  Out[7]: {'color': 'blue'}
                  
                  In [8]: G[1][2]['color']='green'
                  
                  In [9]: G.edges(data=True)
                  Out[9]: [(1, 2, {'color': 'green'})]
                  

                  MultiGraphs 有一个额外级别的键来跟踪平行边,因此它的工作方式略有不同.如果您没有明确设置键 MultiGraph.add_edge() 将使用内部选择的键(顺序整数)添加新边.

                  With MultiGraphs there is an additional level of keys to keep track of the parallel edges so it works a little differently. If you don't explicitly set a key MultiGraph.add_edge() will add a new edge with an internally chosen key (sequential integers).

                  In [1]: import networkx as nx
                  
                  In [2]: G = nx.MultiGraph()
                  
                  In [3]: G.add_edge(1,2,color='red')
                  
                  In [4]: G.edges(data=True)
                  Out[4]: [(1, 2, {'color': 'red'})]
                  
                  In [5]: G.add_edge(1,2,color='blue')
                  
                  In [6]: G.edges(data=True)
                  Out[6]: [(1, 2, {'color': 'red'}), (1, 2, {'color': 'blue'})]
                  
                  In [7]: G.edges(data=True,keys=True)
                  Out[7]: [(1, 2, 0, {'color': 'red'}), (1, 2, 1, {'color': 'blue'})]
                  
                  In [8]: G.add_edge(1,2,key=0,color='blue')
                  
                  In [9]: G.edges(data=True,keys=True)
                  Out[9]: [(1, 2, 0, {'color': 'blue'}), (1, 2, 1, {'color': 'blue'})]
                  
                  In [10]: G[1][2]
                  Out[10]: {0: {'color': 'blue'}, 1: {'color': 'blue'}}
                  
                  In [11]: G[1][2][0]['color']='green'
                  
                  In [12]: G.edges(data=True,keys=True)
                  Out[12]: [(1, 2, 0, {'color': 'green'}), (1, 2, 1, {'color': 'blue'})]
                  

                  这篇关于如何向networkx中的边缘添加新属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:数据属性和方法属性的区别 下一篇:如何返回属性的默认值?

                  相关文章

                  最新文章

                2. <legend id='7VXNl'><style id='7VXNl'><dir id='7VXNl'><q id='7VXNl'></q></dir></style></legend>

                  <small id='7VXNl'></small><noframes id='7VXNl'>

                  1. <i id='7VXNl'><tr id='7VXNl'><dt id='7VXNl'><q id='7VXNl'><span id='7VXNl'><b id='7VXNl'><form id='7VXNl'><ins id='7VXNl'></ins><ul id='7VXNl'></ul><sub id='7VXNl'></sub></form><legend id='7VXNl'></legend><bdo id='7VXNl'><pre id='7VXNl'><center id='7VXNl'></center></pre></bdo></b><th id='7VXNl'></th></span></q></dt></tr></i><div id='7VXNl'><tfoot id='7VXNl'></tfoot><dl id='7VXNl'><fieldset id='7VXNl'></fieldset></dl></div>

                      • <bdo id='7VXNl'></bdo><ul id='7VXNl'></ul>
                    1. <tfoot id='7VXNl'></tfoot>