2017-04-04 58 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) 
相關問題