[英]creating named instances of a class within a for loop — related to networkx — Python
我面臨的問題如下:
假設我們有一些課程(它的作用並不重要):
class Node: ...
...
我現在需要創建該類的多個實例; 全部帶有名稱。 我嘗試了幾種方法,這里嘗試一種,顯然不起作用。 只是為了闡明我要實現的目標:
for i in range(number_of_instances):
"name"+str(i+1) = Node()
我需要所有這些對象的名稱,以便以后將它們放在列表中。 實際上,它是包含圖中所有節點的列表。 該圖將使用networkx模塊制作。 我需要能夠以某種方式區分列表中的節點。 這就是為什么我需要這個名字。
my_graph = networkx.Graph()
for i in range(number_of_nodes):
my_graph.add_node(Node(), name = str(i+1))
執行此操作后, my_graph.nodes()
列表以某種方式混淆了節點的順序。 因此,它不符合將節點添加到圖中的順序。 所以我不再知道如何在節點之間精確區分。
編輯
給定圖的拉普拉斯算式,我將所有內容都設置好,然后繪制該圖。
name_dict = nx.get_node_attributes(my_graph, "name")
pos = nx.spring_layout(my_graph)
nx.draw(my_graph, pos, with_labels=False)
nx.draw_networkx_labels(my_graph, pos, name_dict)
plt.show()
但是,這不會導致正確的標簽。
您不需要名稱,只需要引用即可 。 一種簡單的解決方案是將引用放入字典中:
node = {}
for i in range(number_of_instances):
node[i] = Node()
...
for i in range(number_of_nodes):
my_graph.add_node(node[i], name="node %s" % i)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.