2017-04-04 69 views
1

这里,我有一个字典列表,我需要使用值来查找对象。如何在字典列表中查找键值不一致的值

people = [ 
    {'name': mifta} 
    {'name': 'khaled', 'age':30}, 
    {'name': 'reshad', 'age':31} 
] 

我想通过“年龄”键以找到值为30,我可以通过以下方式

for person in people: 
    if person.get('age'): 
    if person['age'] == 30: 

有没有更好的方式来做到这一点没有大量的if else做到这一点?

+0

你只需要使用'如果person.get( '年龄')== 30:','默认返回'None'这是从来没有GET''== 30' –

回答

1

如果你想避免的if..else你可以使用lambda函数。

fieldMatch = filter(lambda x: 30 == x.get('age'), people) 

或者还使用列表理解来获取列表中的名称。

names = [person['name'] for person in people if person.get('age') == 30] 
+0

拉姆达的工作非常适合我。谢谢 –

+0

列表理解被认为比lambda更容易阅读。 – shadow0359

2

你可以使用dict.get()一次没有person['age'],它可以让你提供一个默认值,如果钥匙丢失,所以你可以试试这个:

dict.get

返回的关键值如果密钥在字典中,则使用默认值。如果 默认没有给出,则默认为无,所以,这种方法从未 抛出一个KeyError

people = [ 
    {'name': 'mifta'}, 
    {'name': 'khaled', 'age':30}, 
    {'name': 'reshad', 'age':31} 
]  
for person in people: 
    if person.get('age',0)==30: 
     print(person) 
相关问题