Каков наиболее эффективный способ переместить/переименовать node в NetworkX?

Я использую библиотеку графиков NetworkX для Python. В какой-то момент в моей программе я хотел бы "консолидировать" мои идентификаторы узлов в последовательности чисел. Вот мой наивный подход:

start = 1 # could be anything
for i, n in enumerate(g.nodes()):
    if i+start == n:
        continue
    g.add_node(i+start, attr_dict=g.node[n])
    g.add_edges_from([(i+start, v, g[n][v]) for v in g.neighbors(n)])
    g.remove_node(n)

Есть ли более быстрый способ, чем эта исчерпывающая копия всех соседей? Например, я попробовал g[i+start] = g[n], но это запрещено.

Спасибо!

Ответ 2

Если ваш интерес по-прежнему имеет значение, networkx.relabel_nodes() принимает словарь сопоставления.