繁体   English   中英

如何在 python 的字典列表中获取具有给定值的字典?

[英]how to get the dictionary with a given value in a list of dictionary in python?

我有一个字典列表,例如我给定的键值是'jerry'。

有没有办法循环到列表并只返回键值名称为“jerry”的字典?

lst= [{'name':'tom','score':5},{'name':'jerry','score':10},{'name':'jason','score':8}]

它应该返回

{'name':'jerry','score':10}

您可以使用生成器表达式获取所有合适的元素,并使用next选择第一个:

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

使用列表推导:

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] 

列表理解应该起作用:

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

请注意,您也可以使用过滤器方法

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

或创建 lambda:

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

或者:

getData = lambda propName, propVal: filter(lambda x: x.get(propName) == propVal, lst)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM