2015-06-21 57 views
1

我正在使用Python3和boto3包,並且正在運行describe_instances()來描述我的所有實例。然而,返回類型是一個字典,現在字典中有列表和其他字典。想要訪問另一個字典內列表中的字典中的值

我想要做的例子是隻返回「InstanceId」字符串或者如果我可以返回不會壞的整個「實例」列表。

ec2 = boto3.client(Make connection here) 
response = ec2.describe_instances() 
pp = pprint.PrettyPrinter(indent=2) 
pp.pprint(response) 

返回類型和響應代碼可以在這裏找到。 http://boto3.readthedocs.org/en/latest/reference/services/ec2.html#EC2.Client.describe_instances

回答

2

你可以得到所有InstanceIDs的名單像

import itertools 
instance_list = list(itertools.chain.from_iterable([[i.get("InstanceId") for i in r.get("Instances", [])] for r in response['Reservations']])) 
+0

的東西名單這工作正是我想它的工作。但是你能否解釋一下這個語法。在這裏完成Python的noob。 –

+0

'i.get(「key」,default)'如果字典中不存在該鍵,則返回一個默認值; '[f(i)for i in x]'是一個列表理解表達式,它通過遍歷並評估f(i)中的每個元素來構建一個列表。因此,它或多或少等同於'the_list = [];對於我在x:the_list.append(f(i))',但沒有將該列表分配給變量。 – celticminstrel