Это для проекта динамической кольцевой топологии. В частности, мне нужно назвать каждый узел: s1, s2 ... sz и назвать каждый хост h1-1, h1-2, ... hz-n. Таким образом, z - количество узлов, а n - номер узла, подключенного к каждому узлу. Итак, у меня есть список узлов, я пытаюсь использовать этот узел в качестве ключа, чтобы иметь другой список хостов, а затем я могу поместить их в словарь для использования. Как я могу достичь этой цели? Пример графика, как показано ниже:Как закодировать список и добавить его в словарь в цикле?
ответ
Я думаю, что вы ищете что-то вдоль линий этого:
# 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)
Большое вам спасибо за помощь! – angelionmaker
Нет проблем. Поскольку вы новичок здесь: вы можете выбрать мой ответ вместо комментариев. –
только после этого, я столкнулся с синтаксической ошибкой, которая, как показано ниже, знаешь причину? dct = {} ^ СинтаксисError: недействительный синтаксис – angelionmaker
Что вы пробовали делать? Покажите свой код и объясните, с чем именно вы боретесь. (Также почему вы поместили тег «node.js»?) – UnholySheep
Я пытаюсь построить топологию Dynamic Mininet. Поэтому я разместил код ниже. – angelionmaker
Мой код был слишком длинным ... Я попробую решение снизу сначала ... Спасибо ... – angelionmaker