aman
aman

Reputation: 39

Python: Iteration through a list of items in dictionary and assign variables

I am trying to iterate through a dictionary and assign variables to the key items in the dictionary in this python script, however the variables are not getting assigned as expected, below is the python script which I am using, tried in several methods but unable to crack this, any help will be greatly appreciated:

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)

Current Output:

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

Expected output:

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

Upvotes: 0

Views: 59

Answers (1)

Pinyi Wang
Pinyi Wang

Reputation: 862

Try this:

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)

Upvotes: 2

Related Questions