Trouver toutes les occurrences d'une clé dans les dictionnaires et les listes imbriqués
Ce problème présente un dictionnaire avec une profondeur d'imbrication arbitraire, contenant des listes et des dictionnaires . L'objectif est d'extraire les valeurs de chaque « identifiant » de clé au sein de la structure.
Solution :
Les fonctions suivantes offrent diverses approches pour parcourir la structure de données imbriquée et récupérer les valeurs "id":
-
gen_dict_extract(k,o): Cette fonction utilise un générateur récursif pour naviguer dans le dictionnaire et les listes. Il vérifie que la fonction "iteritems" gère les versions Python 2 et 3.
-
find_all_items(k,o): Semblable à la première approche, cette fonction utilise la récursivité et l'itération pour extraire les valeurs "id".
-
findkeys(k,o): Cette fonction exploite le Méthode "isinstance" pour identifier les listes et les dictionnaires au sein de la structure. Il utilise des boucles "for" imbriquées pour parcourir les données et localiser les clés "id".
-
get_recursively(k,o): Cette fonction combine les principes de récursion et de compréhension pour parcourir le imbrication et recherchez la clé cible.
-
find(k,o): Utilisation d'un langage simplifié approche récursive, cette fonction parcourt le dictionnaire et les listes pour extraire les valeurs "id".
-
dict_extract(k,o): Semblable à la fonction find, cette fonction utilise une approche récursive légèrement plus simple pour localiser les valeurs "id" dans la structure.
Performance Comparaison :
Après avoir testé les fonctions sur un objet de dictionnaire complexe, la fonction gen_dict_extract est apparue comme la plus rapide, tandis que la fonction find_all_items a considérablement sous-performé. Les autres fonctions présentaient des performances similaires, find et keyHole étant limitées aux opérations de recherche de chaîne.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn