使用 boto 在 python 上分隔键值
Having key value separated on python with boto
我试图只从 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'}]
有什么想法吗?
提前致谢
您已将字典嵌套在列表中。您必须遍历列表才能访问该卷的所有 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))
我试图只从 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'}]
有什么想法吗? 提前致谢
您已将字典嵌套在列表中。您必须遍历列表才能访问该卷的所有 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))