在使用PythonNetworkX包生成的简单图中,我们可以为单个边添加多个权重吗



在以下网络文档中。图形边缘:https://networkx.github.io/documentation/stable/reference/classes/generated/networkx.Graph.edges.html

它说明了我们如何在边缘上添加权重:

G = nx.path_graph(3)  
G.add_edge(2, 3, weight=5)

我的问题是,我们能在一个简单(而不是多(图中为同一条边添加多个权重吗?

例如,我想创建一个简单的图来描述在组织中工作的员工的联系网络。我的网络中的一个节点表示一名员工,在创建网络时,我想在两名员工见面时划清界限,但我想根据他们一起执行不同类别工作的时间分配多个权重,例如,节点A和节点B在一个项目上花了5小时,在一次会议上花了2小时,在午餐上花了1小时。

谢谢你提前回复。

您可以添加任意数量的边属性。示例:

>>> G.add_edge(2, 3, lunch_time=1, project_time=5, meeting_time=2)
>>> G.edges[2,3]
{'weight': 5, 'lunch_time': 1, 'project_time': 5, 'meeting_time': 2}
>>> G.edges[2,3]['lunch_time']
1

答案是否定的,但也没那么糟糕。CCD_ 1是在字典G._adj中给出指令更新密钥2和3的方法,字典CCD_。

更新后,它看起来是这样的:

G._adj = {2: {3: {'weight': 5}}, 3: {2: {'weight': 5}}}

由于字典中不能有相同的键,所以不可能将不同的值分配给相同的权重属性。

为了存储花费的时间,您可以使用字典、元组、列表或任何其他对您有利的数据类型,例如:

G.add_edges(2, 3, weight = {'project': 5, 'meeting': 2, 'lunch':1})

它们也是单个值,应该是(至少,正常情况下(可迭代的值。

最新更新