我试图让 for 循环在 boto3 中工作,尽管我让它工作,但很难弄清楚。目前我有: `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"]另外,我了解字典的工作原理,您引用字典名称,然后在[方括号]中引用您想要查找其值的键。但是,当我尝试这个时(这显然是正确的) `describe_instance = ec2.describe_instances() for item2 in describe_instance['Reservations']: instance_state = item2['Instances'][0]["State"]["Name"]`我不明白 [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"]谢谢
1 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
我不明白的是为什么索引需要位于 = 符号之后,以及为什么如果我只有以下内容就会出错:
“index”之所以存在,是因为那是您要从中获取指定值的字典。
我不明白 [0] 正在做什么,因为字典中没有值为 0 的键。
[<number>] 语法表示您正在尝试从列表中获取值,其中数字表示您要获取列表中的哪个索引。在您的特定情况下,item2 中的“Instances”对象是包含有关所有 EC2 实例信息的字典列表。这就是为什么您可以使用 ['State']['Name'] 来获取实例当前所处状态的名称。
如果其中有嵌套字典我该怎么办?会是这样的吗:
如果“名称”字段包含一个字典列表(这没有意义),那么您可以按照上一个示例中的建议进行操作。
添加回答
举报
0/150
提交
取消