J'ai la liste de dicts suivante.
people = [
{'name': "Tom", 'age': 10},
{'name': "Mark", 'age': 5},
{'name': "Pam", 'age': 7}
]
Quel serait le moyen le plus optimisé en termes de performances pour rechercher dans la liste des dictés. Voici différentes méthodes:
next((item for item in dicts if item["name"] == "Pam"), None)
OR
filter(lambda person: person['name'] == 'Pam', people)
OR
def search(name):
for p in people:
if p['name'] == name:
return p
OR
def search_dictionaries(key, value, list_of_dictionaries):
return [element for element in list_of_dictionaries if element[key] == value]
Toute autre méthode est également la bienvenue. Merci.
Faire un timeit rapide sur les fonctions montre que l'utilisation du filtre semble être la plus rapide de toutes les méthodes
%timeit filter(lambda person: person['name'] == 'Pam', people)
1000000 boucles, meilleur de 3: 263 ns par boucle
Si vous recherchez un seul article, c'est la "meilleure" approche
def search(name):
for p in people:
if p['name'] == name:
return p
Toutes les autres implémentations itéreront sur tous les éléments de la liste, tandis que celle-ci s'arrêtera une fois l'élément trouvé