python-3.x 尝试遍历字典列表

hmae6n7t  于 2022-12-30  发布在  Python
关注(0)|答案(3)|浏览(172)

我有一个json列表,我想在一个目录列表中迭代"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"}]

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

代码的输出:
它给出了所有键的值,但我只想要"ServerIPList"的值,并迭代其值"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"的dict内迭代"PrivateIP"的值,并将它们的值追加到空列表"InstanceIds"中

InstanceId = ["182.0.0.0", "182.1.1.1"]
r6hnlfcb

r6hnlfcb1#

我觉得你可以这样做

for i in message:
    for item in i['ServerIPList']:
        instanceIds.append(item['PrivateIP'])

外部循环迭代消息列表中的元素,内部循环迭代每个字典的ServerIPList键中的元素。对于每个PrivateIP值,它都被附加到instanceIds列表中。

3pmvbmvn

3pmvbmvn2#

为了访问列表消息的内容,我们必须对其进行迭代for i in message:
为了访问每个i中的ServerIPList,我们必须创建另一个for循环,即for j in i['ServerIPList']
最后我们可以将privateIP追加到空列表中。
其完整代码如下所示:

for i in message:    
    for j in i['ServerIPList']:
        InstanceId.append(j['PrivateIP'])
print(InstanceId)
wljmcqd8

wljmcqd83#

for key in message[0].keys():
    if (key == "ServerIPList"):
        for i in message[0][key]:
            for key1 in i.keys():
                if (key1 == "PrivateIP"):
                    InstanceId.append(i[key1])

print(InstanceId)

相关问题