使用boto

时间:2016-08-04 11:34:53

标签: python dictionary boto3

我试图只从python中的字典中获取值> 我跟着这个link,但我告诉我一个奇怪的错误

AttributeError: 'list' object has no attribute 'items'

但它不是一个列表它是一本字典(我认为......)

有我的代码

volumes = ec2.volumes.filter(
      Filters=[{'Name': 'status', 'Values': ['in-use']}]) 

for volume in volumes:
      print(volume.attachments)


for k, v in volume.attachments.items():
      print("Code : {0}, Value : {1}".format(k, v))

第一次印刷的结果是:

[{u'AttachTime': datetime.datetime(2016, 8, 2, 14, 54, 27, tzinfo=tzutc()), u'InstanceId': 'i-xxxxxx', u'VolumeId': 'vol-xxxxx', u'State': 'attached', u'DeleteOnTermination': True, u'Device': '/dev/sda1'}]

有什么想法吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

您将字典嵌套在列表中。您必须遍历列表才能访问该卷的所有attachments。您的方法仅采用上一次迭代的最后volume,您应该嵌套 for-loops 来查看所有卷:

for volume in volumes:
     for attachment in volume.attachments:
         for k, v in attachment.items():
             print("Code : {0}, Value : {1}".format(k, v))

如果每个卷都有一个附件,那么在索引0处索引附件列表就足够了:

for volume in volumes:
    for k, v in volume.attachments[0].items():
        #                          ^
        print("Code : {0}, Value : {1}".format(k, v))