Python如何从CSV文件构建以FortiGate地址组为键的IP列表字典
你当前的代码存在两个问题:一是重复遇到同组名时会覆盖已有的列表为空白,二是没有执行IP地址的追加操作,另外还要注意跳过CSV的表头行。
修改后的代码如下:
import csv result_dict = {} with open('hosts.csv', 'r') as csvfile: reader = csv.reader(csvfile, delimiter=',') # 跳过表头行 next(reader) for row in reader: # 跳过组名为空的行 if not row[2].strip(): continue group_name = row[2] ip_addr = row[1] # 如果组名不存在,先初始化空列表 if group_name not in result_dict: result_dict[group_name] = [] # 把当前IP追加到对应组的列表里 result_dict[group_name].append(ip_addr)
运行后result_dict就是你需要的结构:{'AIXGROUP1': ['10.0.0.1', '10.0.0.2'], 'AIXGROUP2': ['10.0.0.3', '10.0.0.4']}
你也可以用collections.defaultdict简化写法,无需手动判断键是否存在:
import csv from collections import defaultdict result_dict = defaultdict(list) with open('hosts.csv', 'r') as csvfile: reader = csv.reader(csvfile, delimiter=',') next(reader) for row in reader: if row[2].strip(): result_dict[row[2]].append(row[1]) # 如果需要转成普通字典,可加:result_dict = dict(result_dict)
内容的提问来源于stack exchange,提问作者naclava
相关产品推荐
相关产品推荐

