2011-07-06 60 views

回答

5

你可以得到一台发电机表达的所有合适的元素和挑头与next

next(d for d in lst if d['name'] == 'jerry') 
+0

'd.get( '名')'是更好,如果钥匙可能会丢失 –

1

列表理解应该工作:

lst = [{'name':'tom','score':5},{'name':'jerry','score':10},{'name':'jason','score':8}] 
print([d for d in lst if d['name'] == 'jerry'][0]) 
3

使用列表理解:

result = [x for x in lst if x['name'] == 'jerry'][0] 

作为一个侧面说明,你可能想使用你的数据namedtuple如果你打算有很多相似结构的字典,你不希望他们发生变异:

Person = collections.namedtuple('Person', 'name score') 
lst = [Person('jerry', 10), ...] 
result = [x for x in lst if x.name == 'jerry'][0] 
0

请注意,您还可以使用filter方法

lst = [{'name':'tom','score':5},{'name':'jerry','score':10},{'name':'jason','score':8}] 
filter(lambda x: x.get('name') == 'jerry', lst) 

或创建拉姆达:

getUserDataByName = lambda userName: filter(lambda x: x.get('name') == userName, lst) 

OR:

getData = lambda propName, propVal: filter(lambda x: x.get(propName) == propVal, lst) 
相关问题