python не может прочитать ключ в dict

#python #dictionary

#python #словарь

Вопрос:

У меня есть этот диктант от AWS:

https://pastebin.com/pG02WANu

и я пытаюсь получить ключ Name на:

Проверки работоспособности-> HealthCheckConfig-> AlarmIdentifier-> Name

но, похоже, python останавливается на HealthCheckConfig:

 for alarm in alarms['HealthChecks']:
    print('Alarm: %s' % alarm )
    if unicode('AlarmIdentifier') in alarm['HealthCheckConfig']:
        print('Alarm Name: %s' % alarm['AlarmIdentifier'] )
  

я получаю:

 Alarm: {u'HealthCheckConfig': {u'InsufficientDataHealthStatus': '... u'MetricName': 'HTTPCode_Target_5XX_Count'}}

    Traceback (most recent call last):
  File "lambda_function.py", line 283, in <module>
    main()
  File "lambda_function.py", line 279, in main
    lambda_handler('start', 'test')
  File "lambda_function.py", line 263, in lambda_handler
    freeSWITCH.setHC(fsNode   ' CPU Health', aws_creds, 0)
  File "/home/admin/scripts/myscript/myscript.py", line 81, in setHC
    print('Alarm Name: %s' % alarm['AlarmIdentifier'] )
KeyError: 'AlarmIdentifier'
  

Есть идеи?

Комментарии:

1. ключ AlarmIdentifier не в alarm , а в alarm['HealthCheckConfig'] нет?

2. Пожалуйста, разместите (хотя бы некоторые) данные вместо ссылки на них.

Ответ №1:

Это то, что сработало, @PRMoureu указал на мою ошибку… Думаю, я сегодня слишком долго этим занимался.

 alarms = client.list_health_checks(MaxItems='2')
print('alarms: %s' % alarms)
for alarm in alarms['HealthChecks']:
    print('Alarm: %sn==============================' % alarm )
    if unicode('AlarmIdentifier') in alarm['HealthCheckConfig']:
        print('FOUND')
        print('Alarm Name: %s' % alarm['HealthCheckConfig']['AlarmIdentifier']['Name'] )