Попытка проверить значение местоположения для каждого сегмента - PullRequest
0 голосов
/ 12 июня 2019

В моем приложении есть функция, которая дает мне такой ответ:

{
  'ResponseMetadata': {
    'RequestId': 'e7bfcf5f-707e-4526-8b43-077bfa01e9ed', 
    'HTTPStatusCode': 200, 
    'HTTPHeaders': {
      'date': 'Wed, 12 Jun 2019 05:46:37 GMT', 
    }, 
  }, 
  'IsTruncated': False, 
  'Marker': 'foo1', 
  'Buckets': [
    {
      'Name': 'foo2', 
      'CreationDate': datetime.datetime(2019, 6, 11, 15, 7, 10, 200000, tzinfo=tzutc()), 
      'Location': 'r1'
    }, {
      'Name': 'foo3', 
      'CreationDate': datetime.datetime(2019, 6, 11, 15, 7, 10, 381000, tzinfo=tzutc()), 
      'Location': 'r1'
    }
  ]
}

Я хочу проверить, что Location в ответе = r1.

Я пробовал это, но это не работает:

for i in len(resp['Buckets']):
    assert(resp['Buckets'][len(i)]['Location'] == 'r1')

Я также пытался for i in range(resp['Buckets']), но получаю эту ошибку:

TypeError: 'list' object cannot be interpreted as an integer

Что я делаю не так и как это исправить?

1 Ответ

1 голос
/ 12 июня 2019

Вам следует взглянуть на этот ответ , чтобы понять, чем цикл Python for отличается от цикла while и как он на самом деле работает.

Что касается вашего кода, вам нужно циклически перебирать resp['Buckets'] вместо len(..):

for bucket in resp['Buckets']:
    assert bucket['Location'] == 'r1'

Насколько я понимаю, вы пытаетесь проверить, есть ли в всех корзинах ключ location со значением r1. Другой подход заключается в использовании метода all:

all([bucket['Location'] == "r1" for bucket in d['Buckets']])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...