Ici, j'ai une liste de dictionnaires, j'ai besoin de trouver l'objet en utilisant value.

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

Je voudrais trouver par clé «âge» où la valeur est 30. Je peux le faire de la manière suivante

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

Y a-t-il une meilleure façon de faire cela sans beaucoup de si autre chose?

1
Md Khaled Hossain 4 avril 2017 à 08:14

2 réponses

Meilleure réponse

Si vous voulez éviter if..else, vous pouvez utiliser la fonction lambda.

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

Ou utilisez également la compréhension de liste pour obtenir des noms dans une liste.

names = [person['name'] for person in people if person.get('age') == 30]
1
shadow0359 4 avril 2017 à 06:15

Vous pouvez simplement utiliser dict.get() une fois sans person['age'], cela vous permet de fournir une valeur par défaut si la clé est manquante, vous pouvez donc essayer ceci:

dict.get

Renvoie la valeur de la clé si la clé est dans le dictionnaire, sinon la valeur par défaut. Si la valeur par défaut n'est pas donnée, la valeur par défaut est None, de sorte que cette méthode ne lève jamais une KeyError

people = [
   {'name': 'mifta'},
   {'name': 'khaled', 'age':30},
   {'name': 'reshad', 'age':31}
]    
for person in people:
    if person.get('age',0)==30:
        print(person)
2
McGrady 4 avril 2017 à 05:23