2017-01-14 15 views
-4

Это для проекта динамической кольцевой топологии. В частности, мне нужно назвать каждый узел: s1, s2 ... sz и назвать каждый хост h1-1, h1-2, ... hz-n. Таким образом, z - количество узлов, а n - номер узла, подключенного к каждому узлу. Итак, у меня есть список узлов, я пытаюсь использовать этот узел в качестве ключа, чтобы иметь другой список хостов, а затем я могу поместить их в словарь для использования. Как я могу достичь этой цели? Пример графика, как показано ниже:Как закодировать список и добавить его в словарь в цикле?

+3

Что вы пробовали делать? Покажите свой код и объясните, с чем именно вы боретесь. (Также почему вы поместили тег «node.js»?) – UnholySheep

+0

Я пытаюсь построить топологию Dynamic 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. Обратите внимание, что dictionaries неупорядочены.

Или используйте:

# 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 = {} ^ СинтаксисError: недействительный синтаксис – angelionmaker