为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇湘沐 2024-01-04 16:23:35
我试图让 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'] 来获取实例当前所处状态的名称。

如果其中有嵌套字典我该怎么办?会是这样的吗:

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


查看完整回答
反对 回复 2024-01-04
  • 1 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信