2016-12-13 32 views
0

我正在使用下面顯示的結構的字典。它是一個包含兩個鍵的字典,其中包含字典列表作爲鍵的值,即圖像。我可以返回所有的數據我是通過與在Python字典列表中訪問元素

ImageDict['Images'] 

我想創建的所有圖像標識值的列表進行搜索,但我不知道如何去,考慮到嵌套結構。

{'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'}] 

回答

3

你可以用一個列表理解做到這一點:

image_ids = [d.get('ImageId') for d in ImageDict['Images']] 

如果你確定每個dictImageId它更有效地做d['ImageId']而不是d.get('ImageId')

+0

謝謝,先生。如果我想要每個項目多個鍵,說CreationDate與ImageId,我會創建一個集?我也不確定如何一次拉兩個鍵?我在ImageDict ['Images']中嘗試[d ['ImageId'] ['CreationDate'] – RagePwn

+0

@RagePwn'[(d ['ImageId'],d ['CreationDate'])''會創建一個列表元組喜歡'[('ami-0234bd15','2016-07-05T18:31:48.000Z'),...等等]。 – mVChr