Извлечение значения из вложенного dist - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь извлечь значение из вложенного dist, которое выглядит следующим образом:

response = 
    {'TransitGatewayRouteTables': [{'TransitGatewayRouteTableId': 'tgw-rtb-0461b603f87a09881',
                                            'TransitGatewayId': 'tgw-0d79045d0f874bfd4',
                                            'State': 'available', 
                                            'DefaultAssociationRouteTable': False, 
                                            'DefaultPropagationRouteTable': True, 
                                            'CreationTime': datetime.datetime(2020, 6, 18, 2, 32, 25,
        tzinfo=tzlocal()),
                                            'Tags': []}], 
             'ResponseMetadata': {'RequestId': '8d427b26-7735-4154-a7a3-ed45c83b5894',
                                  'HTTPStatusCode': 200, 
                                  'HTTPHeaders': {'x-amzn-requestid': '8d427b26-7735-4154-a7a3-ed45c83b5894',
                                                  'content-type': 'text/xml;charset=UTF-8', 
                                                  'transfer-encoding': 'chunked', 
                                                  'vary': 'accept-encoding', 
                                                  'date': 'Thu, 18 Jun 2020 15:54:47 GMT', 
                                                  'server': 'AmazonEC2'}, 
                                                  'RetryAttempts': 0}}

Я пытаюсь извлечь значение «tgw-rtb-0461b603f87a09881» из этого, не сумев этого сделать. Пробовали использовать

print (response['TransitGatewayRouteTables']['TransitGatewayRouteTableId'])

, но это дает ошибку: «индексы списка должны быть целыми числами или срезами, а не str: TypeError»

Я могу получить на один уровень глубже, используя следующее:

rtid = response.values()
print(rtid)

Это подводит меня к следующему

dict_values([[{'TransitGatewayRouteTableId': 'tgw-rtb-0461b603f87a09881', 'TransitGatewayId': 'tgw-0d79045d0f874bfd4', 'State': 'available', 'DefaultAssociationRouteTable': False, 'DefaultPropagationRouteTable': True, 'CreationTime': datetime.datetime(2020, 6, 18, 2, 32, 25, tzinfo=tzlocal()), 'Tags': []}], {'RequestId': '6a0ec6df-c41c-4e06-b98d-1afff74e5915', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '6a0ec6df-c41c-4e06-b98d-1afff74e5915', 'content-type': 'text/xml;charset=UTF-8', 'transfer-encoding': 'chunked', 'vary': 'accept-encoding', 'date': 'Thu, 18 Jun 2020 16:13:00 GMT', 'server': 'AmazonEC2'}, 'RetryAttempts': 0}])

Не совсем уверен, иду ли я в правильном направлении. Было бы здорово, если бы кто-нибудь мог помочь описать, как получить требуемую ценность.

1 Ответ

2 голосов
/ 18 июня 2020

В вашем случае вложенных словарей вы должны использовать индекс [0] для доступа к значению внешнего словаря, который является списком, а затем ключ для получения значения из внутреннего словаря

print (response['TransitGatewayRouteTables'][0]['TransitGatewayRouteTableId'])
# tgw-rtb-0461b603f87a09881
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...