Home > Back-end >  Extracting strings from a dict
Extracting strings from a dict

Time:01-11

I am trying to get the network interfaces created in EC2, and due to it I'm using the "describe_network_interfaces" function from boto3. The output of this function is a struct like this:

{
    'NetworkInterfaces': [
        {
            'Association': {
                'AllocationId': 'string',
                'AssociationId': 'string',
                'IpOwnerId': 'string',
                'PublicDnsName': 'string',
                'PublicIp': 'string',
                'CustomerOwnedIp': 'string',
                'CarrierIp': 'string'
            },
            'Attachment': {
                'AttachTime': datetime(2015, 1, 1),
                'AttachmentId': 'string',
                'DeleteOnTermination': True|False,
                'DeviceIndex': 123,
                'NetworkCardIndex': 123,
                'InstanceId': 'string',
                'InstanceOwnerId': 'string',
                'Status': 'attaching'|'attached'|'detaching'|'detached',
                'EnaSrdSpecification': {
                    'EnaSrdEnabled': True|False,
                    'EnaSrdUdpSpecification': {
                        'EnaSrdUdpEnabled': True|False
                    }
                }
            },
            'AvailabilityZone': 'string',
            'Description': 'string',
            'Groups': [
                {
                    'GroupName': 'string',
                    'GroupId': 'string'
                },
            ],
            'InterfaceType': 'interface'|'natGateway'|'efa'|'trunk'|'load_balancer'|'network_load_balancer'|'vpc_endpoint'|'branch'|'transit_gateway'|'lambda'|'quicksight'|'global_accelerator_managed'|'api_gateway_managed'|'gateway_load_balancer'|'gateway_load_balancer_endpoint'|'iot_rules_managed'|'aws_codestar_connections_managed',
            'Ipv6Addresses': [
                {
                    'Ipv6Address': 'string'
                },
            ],
            'MacAddress': 'string',
            'NetworkInterfaceId': 'string',
            'OutpostArn': 'string',
            'OwnerId': 'string',
            'PrivateDnsName': 'string',
            'PrivateIpAddress': 'string',
            'PrivateIpAddresses': [
                {
                    'Association': {
                        'AllocationId': 'string',
                        'AssociationId': 'string',
                        'IpOwnerId': 'string',
                        'PublicDnsName': 'string',
                        'PublicIp': 'string',
                        'CustomerOwnedIp': 'string',
                        'CarrierIp': 'string'
                    },
                    'Primary': True|False,
                    'PrivateDnsName': 'string',
                    'PrivateIpAddress': 'string'
                },
            ],
            'Ipv4Prefixes': [
                {
                    'Ipv4Prefix': 'string'
                },
            ],
            'Ipv6Prefixes': [
                {
                    'Ipv6Prefix': 'string'
                },
            ],
            'RequesterId': 'string',
            'RequesterManaged': True|False,
            'SourceDestCheck': True|False,
            'Status': 'available'|'associated'|'attaching'|'in-use'|'detaching',
            'SubnetId': 'string',
            'TagSet': [
                {
                    'Key': 'string',
                    'Value': 'string'
                },
            ],
            'VpcId': 'string',
            'DenyAllIgwTraffic': True|False,
            'Ipv6Native': True|False,
            'Ipv6Address': 'string'
        },
    ],
    'NextToken': 'string'
}

How can I get just the value from "NetworkInterfaceId" and put it in a list? I was trying extract this value using regex, but I don't have great skills on that yet. May you guys help me, please?

CodePudding user response:

To get a value from a dict you have to "navigate" to it. For example:

my_network_interface_id = my_dict["NetworkInterfaces"][0]["NetworkInterfaceId"]

We need the 0 to get the first element of the array. You might also want to take a look at @JonSG's answer.

CodePudding user response:

mydict['NetworkInterfaces'][0]['NetworkInterfaceId']

  • Related