NameError: name 'name' не определено
Вы получаете эту ошибку, потому что у вас нет переменной с именем name
.
Давайте посмотрим на документация , которую я нашел при поиске в Google "networkx set_node_attributes":
set_node_attributes (G, values, name = None) [источник]
Устанавливает атрибуты узла из заданного значения или словарь значений.
Предупреждение
Порядок вызова значений и имени аргументов переключается между v1.x и v2.x.
Параметры
G (NetworkX Graph)
значения (скалярное значение, dict-like) - Какой атрибут узла должен быть установлен. Если значения не являются словарем, тогда оно рассматривается как одно значение атрибута, которое затем применяется к каждому узлу в G. Это означает, что если вы предоставите изменяемый объект, например список, обновления этого объекта будут отражены в узле. атрибут для каждого узла. Имя атрибута будет name.
Если значения - это dict или dict of dict, он должен быть привязан узлом либо к значению атрибута, либо к dict пар ключ / значение атрибута, используемых для обновления атрибутов узла .
name (string (необязательно, по умолчанию = None)) - Имя атрибута узла, который нужно установить, если значения являются скаляром.
Это говорит нам, что словарь должен быть второй параметр, который нужно передать, а не третий, как у вас.
Он также сообщает нам, что аргумент name
является необязательной строкой.
Собрав все это вместе, вы можете исправить свою код, выполнив это:
nx.set_node_attributes(g, name_dict)
Теперь он будет запущен, но имя атрибута не будет указано. Если вы хотите, чтобы атрибут имел имя 'name'
, вы можете передать строку в качестве третьего параметра:
nx.set_node_attributes(g, name_dict, 'name')
TLDR; Вам нужно исправить порядок ваших параметров и сделать 'name'
строку вместо переменной, заключив ее в кавычки.