【发布时间】:2020-10-29 14:06:44
【问题描述】:
我的目标是编写一个程序,该程序以未连接的节点网络开始,每个节点可能具有相同或不同的属性。然后,如果节点具有共享属性,则将形成一条边。到目前为止,我已经浏览了网络包,似乎没有一种简单的方法可以实现这一点。如果有人对如何做到这一点有任何想法,我将非常感谢您的帮助!
import networkx as nx
import matplotlib.pyplot as plt
import random
know_list = ["a", "b", "c", "d"]
G = nx.Graph()
for i in range(1,5):
G.add_node(i, knowledge = know_list[i-1])
#nx.draw(G)
#plt.show()
knowledge=nx.get_node_attributes(G, 'knowledge')
print(knowledge)
G.add_node(5, awareness = random.choices(know_list, k=2))
awareness = nx.get_node_attributes(G, 'awareness')
print(awareness)`
#返回节点5的感知字典后的目标是将感知字典中的内容与知识字典进行比较(注意get_node_attributes返回一个字典,其中节点作为键,know_list中的元素作为项目)。如果感知字典中的元素与节点的知识属性相同,则在两者之间添加一条边。例如,假设随机选择给出意识 = [a,b]。在这种情况下,节点 5 将与节点 1 和 2 形成连接,因为节点 1 具有 [a] 的知识,而节点 2 具有 [b] 的知识。但是,节点 5 不会与节点 3 或 4 形成连接,因为它们不是意识字典中包含的元素。我希望这能澄清一些事情,如果仍然令人困惑,请告诉我。
【问题讨论】:
-
你能定义类似的吗?能否也提供一个Minimal, Complete, and Verifiable example?
-
我编辑了原始帖子以包含我目前拥有的代码(当然不是很多)。我还尝试通过一个示例更详细地描述我想要实现的目标。我希望这有助于解决问题!
标签: python-3.x network-programming nodes networkx