我是Python的新手,我希望匹配2个不同数组的相同索引并将其发送到文件,但我在编译时遇到问题。这是我的想法:
interfaces= ['g0/0','g0/1','g0/2']
nameif = ['inside','outside','dmz']
for i in interfaces:
for j in nameif:
if interfaces[i]==nameif[j]:
g.write ('\ninterface '+ i + j)
我希望在文件中看到这个:
interface g0/0 inside
interface g0/1 outside
interface g0/2 dmz
但是,当我这样运行时,它会说TypeError: list indices must be intergers or slice, not str
。
任何想法,我怎样才能在Python上实现这个目标?
答案 0 :(得分:1)
你无法为此需要两个循环。请改为zip
。
for x, y in zip(interfaces, nameif):
print('interface {} {}'.format(x, y))
interface g0/0 inside
interface g0/1 outside
interface g0/2 dmz
作为提示,您应该了解for
如何更好地运作。例如,
for x in interfaces:
print(x)
g0/0
g0/1
g0/2
for
循环遍历迭代器,而不是索引。如果您想迭代这两者,可以使用enumerate
:
for i, x in enumerate(interfaces):
print(i, x)
0 g0/0
1 g0/1
2 g0/2
答案 1 :(得分:0)
你的'i'循环遍历'interfaces'列表中的元素......然后你尝试将这些元素用作索引,这是你无法做到的。
您可能想要的是一个数字循环,例如:
for i in range(len(interfaces)):
答案 2 :(得分:0)
您不需要遍历所有索引,然后找到匹配的索引。如果您有一些索引i
,则只需访问每个列表中的相应项目。
for i in range(len(interfaces)):
g.write ('\ninterface '+ interfaces[i] + nameif[i])
此外,正如其他人所指出的那样,您之所以会收到该错误,是因为您尝试使用i
和j
作为索引,而他们实际上是列表的元素你正在迭代,因而是字符串类型。