2013-05-26 100 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