Python3: Как напечатать элементы списка, где имя списка является элементом в другом списке? - PullRequest
0 голосов
/ 17 мая 2019

Я новичок в python и пытаюсь написать скрипт, который сохранит местоположение сервера в списке, а затем заполнит отдельный список с именем сервера именами серверов.Я не могу понять, как перебрать данные в моем первом списке, и использовать полученное значение, чтобы перебрать данные во втором списке.

Местоположение закодировано в полном доменном имени сервера, иудаляется через REGEX.

Например:

locations = ["austx", "chntx", "santx"]

austx = ["aus.1", "aus.2", "aus.3"]

chntx = ["chn.1", "chn.2", "chn.3"]

santx = ["sat.1", "sat.2", "sat.3"]

for i in locations:
    print(i)

Приведенный выше код даст мне мое местоположение.Как я могу автоматически циклически проходить по списку austx, когда austx - это значение i в исходном цикле местоположений?

Мне кажется, это должно быть просто, но я что-то здесь упускаю ...

Ответы [ 3 ]

1 голос
/ 17 мая 2019

Это хорошее применение для zip :

locations = ["austx", "chntx", "santx"]

austx = ["aus.1", "aus.2", "aus.3"]

chntx = ["chn.1", "chn.2", "chn.3"]

santx = ["sat.1", "sat.2", "sat.3"]

for i in zip(locations, [austx, chntx, santx]):
    print(i)

выход:

('austx', ['aus.1', 'aus.2', 'aus.3'])
('chntx', ['chn.1', 'chn.2', 'chn.3'])
('santx', ['sat.1', 'sat.2', 'sat.3'])

Иногда отношения один-к-одному между двумя типами данных предполагают возможность объединить их.

0 голосов
/ 17 мая 2019

Используйте следующий код для создания словаря - необходима структура типа списка.

dictionary.setdefault (location, []). Append (hostname)

Структура этого словаряесть такие:

dictionary = {"austx": ["aus.1", "aus.2", "aus.3"], "chntx": ["chn.1", "chn.2 "," chn.3 "]," santx ": [" sat.1 "," sat.2 "," sat.3 "]}

0 голосов
/ 17 мая 2019

Вы действительно хотите другую структуру данных для этого.Вместо того, чтобы разделять списки, вам, вероятно, нужен список списков, так что на самом деле у вас есть:

locations = [["aus.1", "aus.2", "aus.3"],
             ["chn.1", "chn.2", "chn.3"],
             ["sat.1", "sat.2", "sat.3"]]

Затем вы можете выполнить итерацию следующим образом:

for i in locations:
    for val in i:
        print(val)

В противном случае, если вынеобходимо сохранить имена по какой-то другой причине, другие списки можно оставить в словаре, отдельном от вашего основного списка:

locations = ["austx", "chntx", "santx"]
lists = {"austx": ["aus.1", "aus.2", "aus.3"],
         "chntx": ["chn.1", "chn.2", "chn.3"],
         "santx": ["sat.1", "sat.2", "sat.3"]}

Затем посмотрите на:

for i in locations:
    lst = lists[i]
    for val in lst:
        print(val)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...