2017-01-14 54 views
-4

這是一個動態環形拓撲項目。具體來說,我需要命名每個節點:s1,s2 ... sz,並命名每個主機h1-1,h1-2,... hz-n。所以z是節點的數量,n是連接到每個節點的主機的數量。所以我有一個節點列表,我試圖使用該節點作爲一個關鍵字來獲得另一個主機列表,然後我可以將它們放在字典中以供使用。我怎樣才能達到這個目標?這個例子圖爲如下:如何循環列表並將其附加到循環中的字典?

+3

你嘗試過什麼做的?顯示你的代碼,並解釋你在哪裏與之掙扎。 (你爲什麼要放一個「node.js」標籤?) – UnholySheep

+0

我正在嘗試構建動態Mininet拓撲。所以我發佈了下面的代碼。 – angelionmaker

+0

我的代碼太長了...我會嘗試從下面的解決方案第一...謝謝... – angelionmaker

回答

0

我認爲你正在尋找沿此線的東西:

# run with python dynamictopo.py z n 
# e.g.: python dynamictopo.py 3 2 
import sys 

z = int(sys.argv[1]) # number of nodes 
n = int(sys.argv[2]) # number of hosts 

nodes = [] 
for i in range(0, z): 
    nodes.append("s" + str(i + 1)) 

print(nodes) 

dct = {} 
for j, node in enumerate(nodes): 
    hosts = [] 
    for h in range(0, n): 
     hosts.append("h" + nodes[j][1] + "-" + str(h + 1)) 
    dct[node] = hosts 

print(dct) 

這將打印[ 'S1', 'S2',「S3 ']和{'s2':['h2-1','h2-2'],'s3':['h3-1','h3-2'],'s1':['h1-1' ,'h1-2']}如果你使用3和2作爲命令行參數。請注意0​​是無序的。

或者使用:

# run with python dynamictopo.py z n 
# e.g.: python dynamictopo.py 3 2 
import sys 

z = int(sys.argv[1]) # number of nodes 
n = int(sys.argv[2]) # number of hosts 

dct = {} 
for i in range(z): 
    hosts = [] 
    for h in range(0, n): 
     hosts.append("h" + str(i + 1) + "-" + str(h + 1)) 
    dct["s" + str(i + 1)] = hosts 

print(dct) 
+0

非常感謝你的幫助! – angelionmaker

+0

沒問題。因爲您在這裏是新的:您可能想選擇我的答案而不是評論。 –

+0

只是跟進,我遇到了一個語法錯誤,如下...你知道原因嗎? dct = {} ^ SyntaxError:無效的語法 – angelionmaker