gpt4 book ai didi

python - 函数名后的键名

转载 作者:行者123 更新时间:2023-12-03 07:31:04 29 4
gpt4 key购买 nike

我正在使用 boto3 来验证 cloudformation 堆栈是否已存在。其代码是:

import boto3
import botocore

conn = boto3.client('cloudformation')
list_stack = conn.list_stacks()['StackSummaries']
for stack in list_stack:
if stack['StackStatus'] == 'DELETE_COMPLETE':
continue
if stack['StackName'] == stack_name:
return True
return False

conn.list_stack() 返回一个字典。

这段代码可以正常工作。

我不明白的是为什么我需要在list_stack()之后放置['StackSummaries']?我从来没有见过这种将字典的键放在函数后面的代码。我只是不明白它的语法。

如果我不使用这种方式,则会收到此错误消息:

TypeError: string indices must be integers

所以我需要使用我不理解的suntax。有人可以解释一下这是如何工作的吗?

最佳答案

list_stacks() 的输出是:

{
'StackSummaries': [
{
'StackId': 'string',
'StackName': 'string',
'TemplateDescription': 'string',
'CreationTime': datetime(2015, 1, 1),
'LastUpdatedTime': datetime(2015, 1, 1),
'DeletionTime': datetime(2015, 1, 1),
'StackStatus': 'CREATE_IN_PROGRESS'|'CREATE_FAILED'|'CREATE_COMPLETE'|'ROLLBACK_IN_PROGRESS'|'ROLLBACK_FAILED'|'ROLLBACK_COMPLETE'|'DELETE_IN_PROGRESS'|'DELETE_FAILED'|'DELETE_COMPLETE'|'UPDATE_IN_PROGRESS'|'UPDATE_COMPLETE_CLEANUP_IN_PROGRESS'|'UPDATE_COMPLETE'|'UPDATE_ROLLBACK_IN_PROGRESS'|'UPDATE_ROLLBACK_FAILED'|'UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS'|'UPDATE_ROLLBACK_COMPLETE'|'REVIEW_IN_PROGRESS'|'IMPORT_IN_PROGRESS'|'IMPORT_COMPLETE'|'IMPORT_ROLLBACK_IN_PROGRESS'|'IMPORT_ROLLBACK_FAILED'|'IMPORT_ROLLBACK_COMPLETE',
'StackStatusReason': 'string',
'ParentId': 'string',
'RootId': 'string',
'DriftInformation': {
'StackDriftStatus': 'DRIFTED'|'IN_SYNC'|'UNKNOWN'|'NOT_CHECKED',
'LastCheckTimestamp': datetime(2015, 1, 1)
}
},
],
'NextToken': 'string'
}

最外层的字典元素是StackSummaries,其中包含一个列表。

所以,它正在返回列表。

而不是:

list_stack = conn.list_stacks()['StackSummaries']
for stack in list_stack:

他们本可以使用:

stacks = conn.list_stacks()
for stack in stacks['StackSummaries']:

好处是他们将其称为list_stacks,这表明内容是一个列表

关于python - 函数名后的键名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63284390/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com