2016-12-13 7 views
0

私は以下に示す構造の辞書を使っています。 2つのキーを含む辞書で、キーの値として辞書のリストImageがあります。私は私がすべてのIMAGEID値のリストを作成したい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

あなたはリスト内包でそれを行うことができます:あなたは、すべてのdictは、それが代わりにd.get('ImageId')d['ImageId']を行うには、より効率的ですImageIdを持っていることを確認している場合は

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

+0

ありがとうございます。アイテムごとに複数のキーが必要な場合、ImageIdと共にCreationDateと言って、セットを作成しますか?一度に両方のキーを引き出す方法もわかりません。 ImageDict ['Images'] ']のdの[d [' ImageId '] [' CreationDate '] – RagePwn

+0

@RagePwn '[(d [' ImageId ']、d [' CreationDate '])を実行すると、 '( 'ami-0234bd15'、'2016-07-05T18:31:48.000Z ')、... etc ...]'のようなタプル。 – mVChr