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

如何遍历字典列表提取PrivateIP并添加至空列表

问题描述

我有一个JSON格式的列表,想要遍历其中ServerIPList内的PrivateIP字段,把对应的值添加到空列表InstanceId中。当前代码会遍历所有键并输出所有值,没法实现只提取PrivateIP的需求,期望结果是InstanceId = ["182.0.0.0", "182.1.1.1"]。

现有代码:

InstanceId = []
message = [{"SNowTicket":"RITM00001","ServerIPList":[{"PrivateIP":"182.0.0.0", "HostName":"ip-182-0-0-0.ec2.internal", "Region":"us-east-1", "AccountID":"12345678"}, {"PrivateIP": "182.1.1.1", "HostName": "ip-182-1-1-1.ec2.internal", "Region": "us-east-1", "AccountID": "12345678"}],"Operation":"stop","id":"text-123"}]

for i in message:
    for key in i:
        print(key, i[key])
        instanceIds.append(privateIP)

现有代码输出:

SNowTicket RITM00001
ServerIPList [{'PrivateIP': '182.0.0.0', 'HostName': 'ip-182-0-0-0.ec2.internal', 'Region': 'us-east-1', 'AccountID': '12345678'}, {'PrivateIP': '182.1.1.1', 'HostName': 'ip-182-1-1-1.ec2.internal', 'Region': 'us-east-1', 'AccountID': '12345678'}]
Operation stop
id text-123
修复后的代码

要实现需求,不需要遍历所有键,直接定位到ServerIPList字段,再遍历其中的每个字典提取PrivateIP即可,同时注意变量名的大小写一致性:

InstanceId = []
message = [{"SNowTicket":"RITM00001","ServerIPList":[{"PrivateIP":"182.0.0.0", "HostName":"ip-182-0-0-0.ec2.internal", "Region":"us-east-1", "AccountID":"12345678"}, {"PrivateIP": "182.1.1.1", "HostName": "ip-182-1-1-1.ec2.internal", "Region": "us-east-1", "AccountID": "12345678"}],"Operation":"stop","id":"text-123"}]

# 遍历message中的每个元素(此处仅包含一个字典)
for item in message:
    # 直接获取ServerIPList列表,避免键不存在时抛出异常
    server_list = item.get("ServerIPList", [])
    # 遍历每个服务器字典,提取PrivateIP
    for server in server_list:
        private_ip = server.get("PrivateIP")
        if private_ip:  # 可选:过滤空值,避免无效数据加入列表
            InstanceId.append(private_ip)

print(InstanceId)

代码说明

  1. 原代码的问题:
    • 无差别遍历字典所有键,没有针对性访问目标字段ServerIPList
    • 变量名大小写不一致:定义的是InstanceId,添加元素时误用instanceIds
    • privateIP变量未定义,直接使用会触发报错
  2. 修复逻辑:
    • 通过键名直接定位ServerIPList,跳过无关字段的遍历
    • 遍历ServerIPList中的每个服务器字典,精准提取PrivateIP值
    • 使用get()方法访问字典键,避免键不存在时的异常,提升代码健壮性

运行后输出:

["182.0.0.0", "182.1.1.1"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:30:49