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

Python中提取列表内CidrIp对应IP地址的实现方法

提取CidrIp值的实现方法

给定的是嵌套的字典列表结构,要提取所有CidrIp对应的值,你可以通过以下两种方式实现:

方法一:嵌套循环遍历

先把给定的结构赋值给变量,然后逐层遍历提取:

# 定义原始数据
data = [{'IpProtocol': '-1', 'IpRanges': [{'CidrIp': '10.113.97.0/26'}, {'CidrIp': '10.111.0.0/22'}, {'CidrIp': '10.140.0.0/16'}, {'CidrIp': '10.141.0.0/16'}, {'CidrIp': '10.145.0.0/16'}, {'CidrIp': '10.112.0.0/26'}, {'CidrIp': '10.112.0.64/26'}], 'Ipv6Ranges': [], 'PrefixListIds': [], 'UserIdGroupPairs': []}]

cidr_ips = []
# 遍历外层列表的每个规则字典
for rule in data:
    # 遍历当前规则下的IpRanges列表
    for ip_range in rule['IpRanges']:
        # 提取CidrIp值并添加到结果列表
        cidr_ips.append(ip_range['CidrIp'])

print(cidr_ips)

方法二:列表推导式(更简洁)

用Python的列表推导式可以一行完成提取:

data = [{'IpProtocol': '-1', 'IpRanges': [{'CidrIp': '10.113.97.0/26'}, {'CidrIp': '10.111.0.0/22'}, {'CidrIp': '10.140.0.0/16'}, {'CidrIp': '10.141.0.0/16'}, {'CidrIp': '10.145.0.0/16'}, {'CidrIp': '10.112.0.0/26'}, {'CidrIp': '10.112.0.64/26'}], 'Ipv6Ranges': [], 'PrefixListIds': [], 'UserIdGroupPairs': []}]

cidr_ips = [ip_range['CidrIp'] for rule in data for ip_range in rule['IpRanges']]

print(cidr_ips)

为什么之前的s.strip和map方法无效?

  • s.strip是用来去除字符串首尾空白字符的方法,而你处理的是嵌套的字典列表结构,不是纯字符串,所以该方法不适用。
  • map函数通常用来对序列中的每个元素执行统一操作,但这里需要深入到两层嵌套结构中提取值,直接使用map无法处理这种嵌套逻辑,需要结合复杂的lambda表达式,反而不如循环或列表推导式直观易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:40:27