Python-TypeError:函数接受3个位置参数,但给出了4个

Python-TypeError:函数接受3个位置参数,但给出了4个,python,networkx,Python,Networkx,我试图在城市之间添加边缘,并根据它们之间的距离添加词典。 当我试图编译代码时,我遇到了这个错误,有人能帮我吗 import networkx as nx cities = nx.Graph() cities.add_edge('San Diego','LA',{'distance':0.4}) cities.add_edge('NY','Nashville',{'distance':5.6}) cities.add_edge('Boston','DC',{'distance':0.8}) 我

我试图在城市之间添加边缘,并根据它们之间的距离添加词典。 当我试图编译代码时,我遇到了这个错误,有人能帮我吗

import networkx as nx

cities = nx.Graph()
cities.add_edge('San Diego','LA',{'distance':0.4})
cities.add_edge('NY','Nashville',{'distance':5.6})
cities.add_edge('Boston','DC',{'distance':0.8})

我相信您的代码将在networkx 2.0中运行它似乎对我有效,但在networkx 1.11中不起作用

在阅读networkx 1.11的文档时,您似乎需要执行以下操作之一

cities.add_edge('Boston', 'Nashville', distance=0.4})


但是我不能在我的机器上轻松地测试它,因为我的机器有v2.0。

如果你想使用属性字典,那么你可以使用@Joel第二个例子

cities.add_edge('Boston', 'Nashville', attr_dict = {'distance':0.4})
然而,在这种情况下,您将获得“attr_dict”作为一个属性,您将在其中拥有您的字典。像这样

cities.edges(data=True) 
会回来的

EdgeDatView[“波士顿”、“纳什维尔”、{attr_dict':{“距离”: 0.4}]

在属性中仅获取词典的一种方法是从以下位置添加边:

会回来的

EdgeDataView['San Diego','LA',{'distance':0.4},'NY','Nashville',{'distance':5.6},'Boston','DC',{'distance':0.8}]


请不要发布代码的图片,将其放在代码块中。请共享add_edge方法的代码这只是瞎猜,但我的猜测是,您需要将self添加到add_edge方法所采用的参数中。鉴于add_edge是一个networkx方法,这是标记之一,我想这就是OP的用途。所以关于它是如何编码的问题可能是错误的。也就是说,这在networkx 2.0中为我运行
cities.edges(data=True) 
cities.add_edges_from([('San Diego','LA',{'distance':0.4})])
cities.add_edges_from([('NY','Nashville',{'distance':5.6}),
('Boston','DC',{'distance':0.8})])

cities.edges(data=True)