2013-05-26 126 views
1

訪問列表元素,如果我有以下結構:蟒蛇 - 通過關鍵

[ 
    {'id' : 100, 'name' : 'Bill'}, 
    {'id' : 100, 'name' : 'Dave'} 
] 

我怎樣才能在「名稱」鍵獲取元素。也就是說,我想獲得{'id' : 100, 'name' : 'Dave'},但不必迭代並檢查每個匹配項。

這是可能的,如果是的話如何?

+1

你必須迭代。這裏沒有名稱和字典對象之間的映射。 – Blender

+2

然後,您正在使用錯誤的數據結構,您必須迭代才能在列表中查找項目。 –

+0

是否有可以映射到的替代數據結構?我正在從api接收這個結構,並將做很多這個操作。 –

回答

3

你可以先改變你的字典清單到一個單一的字典, 「名」 爲重點:

data = {x['name']: x for x in original_data} 

然後你使用:

data['Dave'] 
data['Bill'] 

PS: 對於Python早於2.7 ,使用這個:

data = dict((x['name'], x) for x in original_data) 
0

這就是你在找什麼

[x for x in a if x['name']=='Dave'] 

但是在這裏,您正在迭代列表並檢查每個項目。實際上,沒有迭代列表就沒有辦法做這樣的事情,因爲它是list而不是map