Le moyen le plus efficace pour rechercher dans la liste des dicts
J'ai la liste suivante des dicts.
people = [
{'name': "Tom", 'age': 10},
{'name': "Mark", 'age': 5},
{'name': "Pam", 'age': 7}
]
Qui serait le plus optimisé en terme de performance de la recherche dans la liste des dicts. Suivantes sont différents, certaines méthodes:
next((item for item in dicts if item["name"] == "Pam"), None)
OU
filter(lambda person: person['name'] == 'Pam', people)
OU
def search(name):
for p in people:
if p['name'] == name:
return p
OU
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.
Tu fais ça une fois et c'est ça? Si oui, que de retourner une fois que vous avez trouvé l'article qui fait le plus de sens. Si ce n'est pas que l'utilisation d'une cartographie qui est ré-utilisable pour les recherches suivantes.
OriginalL'auteur Andy M. | 2016-08-10
Vous devez vous connecter pour publier un commentaire.
De faire un rapide timeit sur les fonctions de montrer que l'utilisation de filtre semble être la manière la plus rapide de toutes les méthodes
%timeit filter(lambda person: person['name'] == 'Pam', people)
1000000 boucles, best of 3: 263 ns par boucle
OriginalL'auteur Varun
Si vous êtes à la recherche d'un seul élément, alors c'est la "meilleure" approche
Tous les autres implémentations de parcourir tous les éléments dans la liste, alors que celui-ci va s'arrêter une fois que l'élément est trouvé
OriginalL'auteur Leon