2015-10-07 118 views
0

的列表中的特定屬性,我有一個像下面獲取從對象

[ 
<NodeImage: id=aki-00501552, 
name=ubuntu/kernels-testing/ubuntu-lucid-amd64-linux-image-2.6.32-341-ec2-v-2.6.32-341.42-kernel, 
driver=AmazonEC2(ap-southeast-1)...>, 
<NodeImage: id=aki-00c4bd52, 
name=ubuntu-kernels/ubuntu-lucid-amd64-linux-image-2.6.32-316-ec2-v-2.6.32-316.31-kernel, 
driver=AmazonEC2(ap-southeast-1)...>, 
<NodeImage: id=aki-015d1253, 
name=RH-pv-grub-hd00-V1.01-x86_64, 
driver=AmazonEC2(ap-southeast-1)...> 
] 

列表中包含多個「NodeImage」和他們每個人都有編號,名稱,在它們的驅動程序屬性列表。我如何獲取所有的ID並存儲在不同的列表中?

+2

'[node.id爲list_of_nodes節點]'?你有一個'NodeImage'對象列表,而不是*列表列表* *。 – jonrsharpe

回答

1

你有一個對象列表;創建一個特定屬性的值的列表,使用list comprehension

ids = [node.id for node in list_of_nodes] 

如果不是所有的對象都具有屬性,您可以包括一個過濾器:

ids = [node.id for node in list_of_nodes if hasattr(node, 'id')] 
+0

我試過這個,但是我得到這個錯誤。 AttributeError:'str'對象沒有屬性'id'。 – Rapid

+0

@sangamesh:所以你的列表也包含至少一個字符串。該代碼假定您的所有對象都具有「id」屬性。清理你的列表(確保它只包含正確類型的對象),或者在理解中使用'if hasattr(node,'id')''。 –

+0

我收到一個空列表:/ – Rapid