簡體   English   中英

在for循環中創建類的命名實例-與networkx相關-Python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM