You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环匹配IP问题:如何映射IP与AP公网IP并生成两类结果

解决IP与AP公网IP映射及结果分类存储问题

先聊聊原代码里的几个小问题:你把ip_list放在循环里每次都会重复定义,而且apall手动取前三个元素的写法不够灵活(要是后续AP数据库条目变多就会漏掉),最关键的是没有把匹配结果存下来,只是打印出来没法直接用于邮件。

我帮你调整了代码,完美实现你要的两个需求——把匹配成功和失败的结果分别存入变量,方便后续单独发邮件。修改后的代码如下:

apdb = {'AP Database': [{'AP Type': '110H', 'Name': 'varagu', 'Public IP': '100.20.300.400', 'Wired MAC Address': 'aa:bb:cc:dd:ee:11'}, {'AP Type': '110H', 'Name': 'thinai', 'Public IP': '100.20.300.500', 'Wired MAC Address': 'aa:bb:cc:dd:ee:22'}, {'AP Type': '110H', 'Name': 'Ragi', 'Public IP': '100.20.300.600', 'Wired MAC Address': 'aa:bb:cc:dd:ee:33'}]}
ap_database = apdb.get('AP Database')

# 初始化两个空列表,分别存成功、失败的匹配结果
success_results = []
fail_results = []

# 把要匹配的IP列表放在循环外,只定义一次就行
ip_list = ['100.20.300.400', '100.20.300.500', '100.20.300.700']

# 直接遍历AP数据库的所有条目,不用手动指定索引,兼容后续条目增加
for ap in ap_database:
    public_ip = ap['Public IP']  # 用方括号取值比__getitem__更直观易读
    ap_name = ap['Name']
    
    if public_ip in ip_list:
        # 匹配成功,生成格式化字符串加入成功列表
        success_str = f"{public_ip} {ap_name.title()} Success"
        success_results.append(success_str)
    else:
        # 匹配失败,生成格式化字符串加入失败列表
        fail_str = f"{public_ip} {ap_name.title()} Fail"
        fail_results.append(fail_str)

# 把列表转成适合邮件正文的格式,用换行分隔每条结果
success_email_content = "\n".join(success_results)
fail_email_content = "\n".join(fail_results)

# 可以打印验证结果
print("成功匹配结果:")
print(success_email_content)
print("\n失败匹配结果:")
print(fail_email_content)

关键改动说明:

  • 将ip_list移到循环外部,避免重复定义,提升代码效率
  • 直接遍历ap_database的所有元素,不管后续AP数量增减都能兼容
  • 用ap['Public IP']替代ap.__getitem__('Public IP'),代码可读性更强
  • 用f-string格式化结果字符串,比传统字符串拼接更简洁优雅
  • 用两个列表分别收集成功/失败结果,最后转成换行分隔的字符串,直接就能作为邮件正文使用

现在你可以直接用success_email_content和fail_email_content这两个变量来生成对应的邮件内容啦~

内容的提问来源于stack exchange,提问作者selvam samymuthu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:32:42