# How to change edges' weight by designated rule?

### Question

I have a weighted graph:

``````F=nx.path_graph(10)
G=nx.Graph()
for (u, v) in F.edges():
``````

Get the nodes list:

``````[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]
``````

I want to change each edge's weight by this rule:

Remove one node, such as node 5, clearly, edge `(4, 5)`, and `(5, 6)` will be delete, and the weight of each edge will turn to:

``````{# these edges are nearby the deleted edge (4, 5) and (5, 6)

(3,4):'weight'=1.1,

(6,7):'weight'=1.1,

#these edges are nearby the edges above mentioned

(2,3):'weight'=1.2,

(7,8):'weight'=1.2,

#these edges are nearby the edges above mentioned

(1,2):'weight'=1.3,

(8,9):'weight'=1.3,

# this edge is nearby (1,2)

(0,1):'weight'=1.4}
``````

How to write this algorithm?

`path_graph` is just an example. I need a program to suit any graph type. Furthermore, the program need to be iterable, it means I can remove one node from the origin graph each time.

1
16
5/20/2019 3:55:45 PM

You can access the edge weight as G[u][v]['weight'] or by iterating over the edge data. So you can e.g.

``````In : import networkx as nx

In : G=nx.DiGraph()

In : G['weight']
Out: 20

In : G['weight']=200

In : G['weight']
Out: 200

In : G.edges(data=True)
Out: [(1, 2, {'weight': 10}), (2, 3, {'weight': 200})]

In : for u,v,d in G.edges(data=True):
...:     d['weight']+=7
...:
...:

In : G.edges(data=True)
Out: [(1, 2, {'weight': 17}), (2, 3, {'weight': 207})]
``````
29
11/4/2010 3:05:29 PM