Python for循环。从AWS中提取特定值

Python for循环。从AWS中提取特定值,python,for-loop,boto3,Python,For Loop,Boto3,我正在尝试让for循环在bot3中工作,即使我让它工作,也很难找到它。目前我有: `spot_requests = ec2.describe_spot_instance_requests() for index in spot_requests['SpotInstanceRequests']: instanceID = index["InstanceId"] instanceState = index["State"

我正在尝试让for循环在bot3中工作,即使我让它工作,也很难找到它。目前我有:

  `spot_requests = ec2.describe_spot_instance_requests()
   for index in spot_requests['SpotInstanceRequests']:
        instanceID = index["InstanceId"]
        instanceState = index["State"]
        spotRequestID = index["SpotInstanceRequestId"]

    print(f'{instanceID} is {instanceState} and has a request ID of {spotRequestID}')`
返回类似于:

“I-1234556已禁用,请求ID为sir-12344”

我不明白的是,为什么索引需要在=号后面,如果我有:

instanceID=[“instanceID”]

此外,我了解字典的工作原理,您引用字典名称,然后在[方括号]中找到要查找其值的键。然而,当我尝试这个(这显然是正确的)

我不明白[0]在做什么,因为字典中没有值为0的键。如果这里面有嵌套字典,我会怎么做?会不会是这样的:

describe_instance = ec2.describe_instances()
 for item2 in describe_instance['Reservations']:
     instance_state = item2['Instances'][0]["State"]["Name"][0]["Nested value I want to find"]
多谢各位

我不明白的是,为什么索引需要在=号后面,如果我有:

“index”之所以存在,是因为它是您希望从中获取指定值的dict

我不明白[0]在做什么,因为字典中没有值为0的键

[]语法表示您正试图从列表中获取值,其中的数字表示要获取列表中的哪个索引。在您特定的情况下,item2中的“Instances”对象是包含所有EC2实例信息的DICT列表。这就是为什么可以使用['State']['Name']获取实例当前所在状态的名称

如果这里面有嵌套字典,我会怎么做?会不会是这样的:

describe_instance = ec2.describe_instances()
 for item2 in describe_instance['Reservations']:
     instance_state = item2['Instances'][0]["State"]["Name"][0]["Nested value I want to find"]

如果“Name”字段包含一个dict列表(这没有意义),那么您可以按照上一个示例中的建议执行操作。

那么“index”是指从索引dic获取“state”、“instanceID”等?对于带有[0]的第二点,您的意思是第一行:descripe_instance=ec2.descripe_instances()--返回字典,for循环--对于descripe_instance['Reservations']中的item2:返回列表吗?那么[0]从该列表中获取第一个名为“State”的值?非常感谢
description\u实例['Reservations]
返回一个分配给item2的dict。但该dict中的“实例”对象是一个列表。一个dict列表,这就是为什么您可以对其执行
['State']
以获取状态dict。在该dict中有一个名为'Name'的字段,这是您使用最后一个
['Name']
获得的。非常感谢您,isak。我很抱歉,但是关于[0],当返回整个值时,它的开头看起来如下:{'Reservations':[{'Groups':[],'Instances':[{'AmiLaunchIndex'..…所以我不太明白的是['Instances'][0]不应该返回'AmiLaunchIndex'。谢谢你,尽管我理解了它的其余部分,它是如何进入内部字典的,但我仍然不完全理解这一步,你几乎是正确的。从方括号和花括号中可以看出,'Instances'也是一个dict列表('Instances':[{'AmiLaunchIndex'…)。当你执行
['Instances'][0]
您将在该列表中的索引0处获取dict。然后从该dict中获取State属性(最终从中获取名称)。哦,我明白了,谢谢。因此,好像在[and{和['Instances'][0]之间存在一个不可见的dict名称。这是否正确?非常感谢isak