Я хочу начать с того, что я ни в коем случае не эксперт по питонам, поэтому мне жаль, если я выражаю себя неправильно.
Я создаю скрипт, который выглядит примерно так:
from netmiko import ConnectHandler
visw0102 = {
'device_type': 'hp_comware',
'ip': '192.168.0.241',
'username': 'admin',
'password': 'password'
}
visw0103 = {
'device_type': 'hp_comware',
'ip': '192.168.0.242',
'username': 'admin',
'password': 'password'
}
site1_switches = [visw0102, visw0103]
for switch in site1_switches:
... (rest of the script)
Я пытаюсь получить текущее имя индекса в цикле FOR, используя функцию enumerate()
, чтобы получить имя индекса списка site1_switches
, но так как этот список состоит из элементов словаря, словарьвозвращаются ключи:
>>> for index, w in enumerate(switch):
... print(w)
...
device_type
ip
username
password
Есть ли способ получить фактическое имя индекса (VISW010X) вместо значений в словарях?
Спасибо
Редактировать : Ответом здесь был вложенный словарь, спасибо Жизнь сложна
Так что я смог продвинуться дальше.Вот код теперь.
from netmiko import ConnectHandler
site1_switches = {
'visw0102' : {
'device_type': 'hp_comware',
'ip': '192.168.0.241',
'username': 'admin',
'password': 'password'
},
'visw0103' : {
'device_type': 'hp_comware',
'ip': '192.168.0.242',
'username': 'admin',
'password': 'password'
}
}
for key, values in site1_switches.items():
device_type = values.get('device_type', {})
ip_address = values.get('ip', {})
username = values.get('username', {})
password = values.get('password', {})
for key in site1_switches.items():
net_connect = ConnectHandler(**dict(key)) <- The ConnectHandler needs a dictionary
Теперь проблема в том, что словарный ключ, кажется, преобразован в набор, но модулю ConnectHandler для продолжения нужен словарь.
Вот что я получаю:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError: dictionary update sequence element #0 has length 8; 2 is required
Мне нужно было бы найти способ преобразовать набор в словарь, но кажется, что dict(key)
не работает, так как он помещает набор в первый ключ словаря (или так кажется).
В любом случае, я могу этого добиться?
Спасибо!