尝试检查每个存储桶的位置值

时间:2019-06-12 05:58:31

标签: python for-loop

我的应用程序中有一个函数可以给我以下响应:

{
  '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 个答案:

答案 0 :(得分:1)

您应该查看this answer来了解Python for循环与while循环的不同之处以及它的实际工作方式。

关于代码,您需要遍历resp['Buckets']而不是len(..)

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

据我了解,您正在尝试检查所有存储桶是否具有值为location的{​​{1}}键。另一种方法是使用r1方法:

all