首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在FOR循环中使用字典键指定列表

在FOR循环中使用字典键指定列表
EN

Stack Overflow用户
提问于 2019-09-28 14:19:06
回答 1查看 30关注 0票数 1

我试图使用添加到字符串的字典中的键来指定for循环中的列表。让我解释一下:

代码语言:javascript
复制
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,具体取决于它在循环中的位置。相反,我得到的是:

代码语言:javascript
复制
>>> 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)。

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-28 14:27:51

eval()是您在这里需要的东西。eval函数允许Python程序在其内部运行Python代码。eval()的一个有用的应用程序是从string计算python表达式。

您可以更新代码,以便像这样使用eval()

代码语言:javascript
复制
>>> 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/48
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58147204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档