访问Python字典列表中的元素
我正在使用一本结构如下所示的词典。它是一个包含两个键的字典,其中一个字典列表作为键Images的值。我可以返回我要搜索的所有数据访问Python字典列表中的元素,python,list,dictionary,nested,Python,List,Dictionary,Nested,我正在使用一本结构如下所示的词典。它是一个包含两个键的字典,其中一个字典列表作为键Images的值。我可以返回我要搜索的所有数据 ImageDict['Images'] 我想创建一个包含所有ImageId值的列表,但考虑到嵌套的结构,我不确定如何执行该操作 {'Images': [{'Architecture': 'x86_64', 'BlockDeviceMappings': [{'DeviceName': '/dev/sda1', 'Ebs': {'DeleteOnTerm
ImageDict['Images']
我想创建一个包含所有ImageId值的列表,但考虑到嵌套的结构,我不确定如何执行该操作
{'Images': [{'Architecture': 'x86_64',
'BlockDeviceMappings': [{'DeviceName': '/dev/sda1',
'Ebs': {'DeleteOnTermination': True,
'Encrypted': False,
'SnapshotId': 'snap-635c1b80',
'VolumeSize': 80,
'VolumeType': 'gp2'}}],
'CreationDate': '2016-07-05T18:31:48.000Z',
'Description': 'tableau dw',
'Hypervisor': 'xen',
'ImageId': 'ami-0234bd15',
'ImageLocation': '15664665456/My-AMI',
'ImageType': 'machine',
'Name': 'My-AMI',
'OwnerId': '15664665456',
'Platform': 'linux',
'Public': False,
'RootDeviceName': '/dev/sda1',
'RootDeviceType': 'ebs',
'SriovNetSupport': 'simple',
'State': 'available',
'VirtualizationType': 'hvm'},
{'Architecture': 'x86_64',
'BlockDeviceMappings': [{'DeviceName': '/dev/sda1',
'Ebs': {'DeleteOnTermination': True,
'Encrypted': False,
'SnapshotId': 'snap-551337ca',
'VolumeSize': 30,
'VolumeType': 'gp2'}},
{'DeviceName': 'xvdca', 'VirtualName': 'ephemeral0'},
{'DeviceName': 'xvdf',
'Ebs': {'DeleteOnTermination': False,
'Encrypted': False,
'SnapshotId': 'snap-60116dd7',
'VolumeSize': 300,
'VolumeType': 'gp2'}}],
'CreationDate': '2016-11-18T20:16:12.000Z',
'Description': '',
'Hypervisor': 'xen',
'ImageId': 'ami-0aa4911d',
'ImageLocation': '81643435666912741/cm-test',
'ImageType': 'machine',
'Name': 'cm-test',
'OwnerId': '8164228989741',
'Platform': 'windows',
'Public': False,
'RootDeviceName': '/dev/sda1',
'RootDeviceType': 'ebs',
'SriovNetSupport': 'simple',
'State': 'available',
'VirtualizationType': 'hvm'}]
您可以通过列表来完成:
image_ids = [d.get('ImageId') for d in ImageDict['Images']]
如果您确定每个
dict
都有一个ImageId
,那么执行d['ImageId']
而不是d.get('ImageId')
,您可以通过列表理解来执行:
image_ids = [d.get('ImageId') for d in ImageDict['Images']]
如果您确定每个
dict
都有一个ImageId
那么执行d['ImageId']
比执行d.get('ImageId')
更有效,谢谢您,先生。如果我希望每个项目有多个键,比如CreationDate和ImageId,我会创建一个集吗?我也不知道如何同时拔出两把钥匙?我在ImageDict['Images']中尝试了[d['ImageId']['CreationDate']@RagePwn[(d['ImageId'],d['CreationDate'])以获得d的图像,[/code>将创建一个元组列表,如[('ami-0234bd15',2016-07-05T18:31:48.000Z'),等等]
。谢谢你,先生。如果我想要每个项目有多个键,比如说CreationDate和ImageId,我会创建一个集合吗?我也不知道如何一次拉两个键?我尝试了[d['ImageId']['CreationDate']@RagePwn[(d['ImageId'],d['CreationDate'])在ImageDict['Images']]中为d创建一个元组列表,如[('ami-0234bd15','2016-07-05T18:31:48.000Z'),…等等]
。