我试图只从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'}]
有什么想法吗? 提前致谢
答案 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))