2017-01-14 56 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