Python:通过字典中的项目列表进行迭代并分配变量

2024-06-26 00:17:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在这个python脚本中遍历一个字典并为字典中的关键项分配变量,但是变量并没有按预期分配,下面是我正在使用的python脚本,尝试了几种方法但无法破解,任何帮助都将不胜感激:

interfaces = {
'switch1':['Gi0/0/0', 'Gi0/0/0.12', 'Gi0/0/0.14', 'Gi0/0/0.100', 'Gi0/0/0.101', 'Gi0/0/0.102', 'Gi0/0/0.105', 'Gi0/0/0.106', 'Gi0/0/1', 'Gi0/0/3', 'Gi0/0/5'],
'switch2':['Gi0/0/0', 'Gi0/0/0.34', 'Gi0/0/0.100', 'Gi0/0/0.101', 'Gi0/0/0.102', 'Gi0/0/0.103', 'Gi0/0/0.105', 'Gi0/0/1'],
'switch3':['Te0/1/0', 'Te0/1/0.3246', 'Te0/1/2', 'Te0/1/3', 'Te0/1/4'],
'switch4':['Te0/1/0.3246', 'Te0/1/3', 'Te0/1/4', 'Te0/1/0'],
'nexus1':['Eth1/1', 'Eth1/2', 'Eth1/4', 'Eth1/5', 'Eth1/6', 'Eth1/49', 'Eth1/50'],
'nexus2':['Eth1/1', 'Eth1/2', 'Eth1/4', 'Eth1/5', 'Eth1/6', 'Eth1/49', 'Eth1/50'],
'switch5':['Gi0/0/0', 'Gi0/0/1', 'Gi0/0/1.99', 'Gi0/0/1.200', 'Gi0/0/1.210', 'Gi0/0/2', 'Gi0'],
'switch6':['Gi0/0/0', 'Gi0/0/1', 'Gi0/0/1.103 ', 'Gi0/0/1.200', 'Gi0/0/1.210', 'Gi0/0/2 ', 'Gi0'],
'switch7':['Gi0/0/0', 'Gi0/0/0.100 ', 'Gi0/0/1 ', 'Gi0/0/3 ', 'Te0/1/0 ', 'Te0/1/0.100', 'Te0/1/1 ', 'Te0/1/1.100', 'Te0/1/1.101', 'Te0/1/1.110'],
'switch8':['Gi0/0/0', 'Gi0/0/0.100', 'Gi0/0/1', 'Gi0/0/2 ', 'Gi0/0/3', 'Te0/1/0 ', 'Te0/1/0.100', 'Te0/1/1', 'Te0/1/1.100 ', 'Te0/1/1.101', 'Te0/1/1.110'],
'nexus3':['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4', 'Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/27', 'Eth1/29', 'Eth1/41'],
'nexus4':['Eth1/1', 'Eth1/2', 'Eth1/3', 'Eth1/4', 'Eth1/5', 'Eth1/6', 'Eth1/7', 'Eth1/8', 'Eth1/25', 'Eth1/26', 'Eth1/27', 'Eth1/28', 'Eth1/29']
}



for key, value in interfaces.items():

    if key == ('switch1' or 'switch2' or 'switch3' or 'switch4'or 'switch5' or 'switch6'):
        username = 'username'
        password = 'password'
        platform = 'cisco_xe'

    elif key == ('switch7' or 'switch8'):
        username = 'username1'
        password = 'password1'
        platform = 'cisco_xe'

    elif key == ('nexus1' or 'nexus2'):
        username = 'username2'
        password = 'password'
        platform = 'cisco_nxos'

    else:
        username = 'username3'
        password = 'password4'
        platform = 'cisco_nxos'

    print(key,username,password,platform)

电流输出:

switch1 username password cisco_xe
switch2 username3 password4 cisco_nxos
switch3 username3 password4 cisco_nxos
switch4 username3 password4 cisco_nxos
nexus1 username2 password cisco_nxos
nexus2 username3 password4 cisco_nxos
switch5 username3 password4 cisco_nxos
switch6 username3 password4 cisco_nxos
switch7 username1 password1 cisco_xe
switch8 username3 password4 cisco_nxos
nexus3 username3 password4 cisco_nxos

预期输出:

switch1 username password cisco_xe
switch2 username password cisco_xe
switch3 username password cisco_xe
switch4 username password cisco_xe
nexus1 username2 password cisco_nxos
nexus2 username3 password4 cisco_nxos
switch5 username password cisco_xe
switch6 username password cisco_xe
switch7 username1 password1 cisco_xe
switch8 username1 password1 cisco_xe
nexus3 username3 password4 cisco_nxos
nexus4 username3 password4 cisco_nxos

Tags: orkeyusernamepasswordeth1ciscoplatformxe
1条回答
网友
1楼 · 发布于 2024-06-26 00:17:07

试试这个:

for key, value in interfaces.items():

    if key in {'switch1', 'switch2', 'switch3', 'switch4', 'switch5', 'switch6'}:
        username = 'username'
        password = 'password'
        platform = 'cisco_xe'

    elif key in {'switch7', 'switch8'}:
        username = 'username1'
        password = 'password1'
        platform = 'cisco_xe'

    elif key in {'nexus1', 'nexus2'}:
        username = 'username2'
        password = 'password'
        platform = 'cisco_nxos'

    else:
        username = 'username3'
        password = 'password4'
        platform = 'cisco_nxos'

    print(key,username,password,platform)

相关问题 更多 >