我的回复语法类型为dict
:
{
'StoppingInstances': [
{
'InstanceId': 'string',
'CurrentState': {
'Code': 123,
'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
},
'PreviousState': {
'Code': 123,
'Name': 'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'
}
},
]
}
现在,如果我需要检查currentState是否为stopping
怎么办?
print "Stopping instance Now",response['StoppingInstances']
for instance in response['StoppingInstances']:
if instance['CurrentState']['Name'] == "stopping":
print "Still Stooping"
if instance['CurrentState']['Name'] == "stopped":
print "Instance Stopped"
print "Now Starting the instance"
response_new = client.start_instances(InstanceIds=[instance_id])
for start_instance in response_new['StartingInstances']:
if start_instance['CurrentState']['Name'] == "running":
print "Instance is UP and running"
else:
print "Some Error occured!!"
答案 0 :(得分:0)
您的response['StoppingInstances']
对象是词典的列表。您必须循环覆盖或索引单个项目:
response['StoppingInstances'][0]['CurrentState']['Name'] == "stopping"
如果您需要测试这些对象中的任何是否处于stopping
状态,您可以使用any()
函数:
any(o['CurrentState']['Name'] == "stopping" for o in response['StoppingInstances'])
如果您需要测试每个实例,请使用循环:
for instance in response['StoppingInstances']:
if instance['CurrentState']['Name'] == "stopping":
答案 1 :(得分:0)
您的数据包含一个包含外部dict值的列表,而不是您想象的简单嵌套字典。您需要索引列表,然后通过键访问嵌套的dict值:
response['StoppingInstances'][0]['CurrentState']['Name']
# ^
在if
区块中:
if response['StoppingInstances'][0]['CurrentState']['Name'] == "stopped":
print "Instance Stopped"