我试图使用添加到字符串的字典中的键来指定for循环中的列表。让我解释一下:
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'
},
'visw0105' : {
'device_type': 'hp_comware',
'ip': '192.168.0.244',
'username': 'admin',
'password': 'password'
}
}
uplinks_visw0102 = ['GigabitEthernet1/0/1','GigabitEthernet1/0/2']
uplinks_visw0103 = ['GigabitEthernet1/0/48']
uplinks_visw0105 = ['GigabitEthernet1/0/1','GigabitEthernet1/0/48']
for key, values in site1_switches.items():
for port in ('uplinks_' + key):
print(port)现在,这并不是所有的脚本,但这是一部分,我被困在需要的元素,它运行的是它。
我原以为port会包含uplinks_visw010X,具体取决于它在循环中的位置。相反,我得到的是:
>>> for key, values in site1_switches.items():
... for port in ('uplinks_' + key):
... print(port)
...
u
p
l
i
n
k
s
_
v
i
s
w
0
1
0
2
u
p
l
i
n
k
s
_
v
i
s
w
0
1
0
3
u
p
l
i
n
k
s
_
v
i
s
w
0
1
0
5
>>>似乎port中的每个字符都是由循环处理的,但这不是我希望它做的。
当将keys与字符串组合在一起时,应该如何处理它们(uplinks_visw010X)。
谢谢你的帮助
发布于 2019-09-28 14:27:51
eval()是您在这里需要的东西。eval函数允许Python程序在其内部运行Python代码。eval()的一个有用的应用程序是从string计算python表达式。
您可以更新代码,以便像这样使用eval():
>>> for key, values in site1_switches.items():
... for port in eval('uplinks_' + key):
... print(port)
...
GigabitEthernet1/0/1
GigabitEthernet1/0/2
GigabitEthernet1/0/48
GigabitEthernet1/0/1
GigabitEthernet1/0/48https://stackoverflow.com/questions/58147204
复制相似问题