簡體   English   中英

我如何迭代 boto3 中的嵌套字典和列表以獲得特定值?

[英]How can I itterate over nested dictionaries and lists in boto3 to obtain particular values?

我正在嘗試迭代這些值以檢索標簽以查看是否有任何標簽值匹配"AWSNetworkFirewallManaged"

我在找出實現此目標的解決方案時遇到問題。

response = {
    "VpcEndpoints": [
        {
            "VpcEndpointId": "vpce-123",
            "VpcEndpointType": "GatewayLoadBalancer",
            "VpcId": "vpc-test",
            "ServiceName": "com.amazonaws.com",
            "State": "available",
            "SubnetIds": [
                "subnet-random"
            ],
            "IpAddressType": "ipv4",
            "RequesterManaged": True,
            "NetworkInterfaceIds": [
                "eni-123"
            ],
            "CreationTimestamp": "2022-10-28T01:23:23.924Z",
            "Tags": [
                {
                    "Key": "AWSNetworkFirewallManaged",
                    "Value": "true"
                },
                {
                    "Key": "Firewall",
                    "Value": "arn:aws:network-firewall:us-west-2"
                }
            ],
            "OwnerId": "123"
        },
        {
            "VpcEndpointId": "vpce-123",
            "VpcEndpointType": "GatewayLoadBalancer",
            "VpcId": "vpc-<value>",
            "ServiceName": "com.amazonaws.vpce.us-west-2",
            "State": "available",
            "SubnetIds": [
                "subnet-<number>"
            ],
            "IpAddressType": "ipv4",
            "RequesterManaged": True,
            "NetworkInterfaceIds": [
                "eni-<value>"
            ],
            "CreationTimestamp": "2022-10-28T01:23:42.113Z",
            "Tags": [
                {
                    "Key": "AWSNetworkFirewallManaged",
                    "Value": "True"
                },
                {
                    "Key": "Firewall",
                    "Value": "arn:aws:network-firewall:%l"
                }
            ],
            "OwnerId": "random"
            }
        ]
    }

到目前為止我有

for endpoint in DESCRIBE_VPC_ENDPOINTS['VpcEndpoints']:
    print(endpoint['VpcEndpointId']['Tags']

然而,這需要是索引,但如果是,我不知道它是否仍會遍歷 VPC 端點 ID 的 rest。

對此有何建議或指導?

您可以使用雙 for 循環:

for endpoint in response['VpcEndpoints']:
  for tags in endpoint['Tags']:
    if 'AWSNetworkFirewallManaged' in tags.values():
     print(endpoint['VpcEndpointId'], tags)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM