如何在Python中遍历两个列表并按对应项组合后写入文件?
解决列表对应元素配对写入文件的问题
嘿,我懂你的困扰——你现在的双重循环会把主机和IP的所有可能组合都写进文件,但你需要的是两个列表对应位置元素的一对一配对,对吧?
正确的实现方法
Python里的zip()函数就是干这个的!它能帮你并行遍历多个可迭代对象,每次取出对应索引位置的元素。修改后的代码如下:
hosts = ['host1', 'host2', 'host3'] ips = ['ip1', 'ip2', 'ip3'] filename = 'devicelist.txt' with open(filename, 'w') as out_file: # 用zip()同时遍历hosts和ips的对应元素 for host, ip in zip(hosts, ips): # 用f-string让字符串拼接更简洁 out_file.write(f"{host} - {ip}\n")
为什么这能行?
zip(hosts, ips)会把两个列表中索引相同的元素打包成元组,比如('host1', 'ip1')、('host2', 'ip2'),循环的时候我们直接把元组里的元素解包成host和ip,这样就能写出你想要的对应关系啦。
额外小提示
如果你的两个列表长度不一致,zip()会以较短的列表为准截断。要是想保留所有元素(比如其中一个列表更长时,缺失的位置用默认值填充),可以用itertools.zip_longest,不过看起来你的两个列表长度是匹配的,所以zip()就完全够用了。
内容的提问来源于stack exchange,提问作者vikdean
相关产品推荐
相关产品推荐

