如何基于接口键值合并Python采集的多组思科交换机端口查询数据
合并端口信息的实现方案
- 先把
interface_list1(端口描述数据)和interface_list2(LLDP邻居数据)转换为以interface为键的字典,提升匹配效率 - 遍历存储端口交换属性的
interface_list,依次合并对应端口的描述、LLDP邻居字段 - 不存在的字段默认填充空字符串,保证格式统一
直接把以下代码追加到你现有脚本的末尾即可运行得到预期结果:
# 转换描述和LLDP列表为字典,方便快速匹配 desc_map = {item["interface"]: item for item in interface_list1} lldp_map = {item["interface"]: item for item in interface_list2} # 合并三类数据 final_port_info = [] for base_info in interface_list: merge_item = base_info.copy() # 合并描述字段,无匹配数据则补空 merge_item.update(desc_map.get(merge_item["interface"], {"descrip": ""})) # 合并LLDP邻居字段,无匹配数据则补空 merge_item.update(lldp_map.get(merge_item["interface"], {"neighbor": ""})) final_port_info.append(merge_item) # 输出合并后的结果 print(json.dumps(final_port_info, indent=2))
运行后输出的单条数据格式如下:
{ "interface": "Gi0/1", "admin_mode": "static access", "access_vlan": "3216", "voice_vlan": "none", "trunking_vlans": [ "ALL" ], "descrip": "Interface Gi0/1", "neighbor": "" }
内容的提问来源于stack exchange,提问作者Richard Lucht
相关产品推荐
相关产品推荐

