Maison  >  Article  >  développement back-end  >  Comment extraire efficacement toutes les valeurs associées à une clé spécifique dans des structures de données imbriquées ?

Comment extraire efficacement toutes les valeurs associées à une clé spécifique dans des structures de données imbriquées ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-10 10:51:03693parcourir

How to Efficiently Extract All Values Associated with a Specific Key in Nested Data Structures?

Recherche de toutes les occurrences d'une clé dans des structures de données imbriquées

Objectif :
Récupérer toutes les valeurs associées à une clé spécifique dans des dictionnaires et des listes imbriqués.

Énoncé du problème :
Considérez une structure de données complexe comme ce dictionnaire :

{
    "id": "abcde",
    "key1": "blah",
    "key2": "blah blah",
    "nestedlist": [
        {
            "id": "qwerty",
            "nestednestedlist": [
                {
                    "id": "xyz",
                    "keyA": "blah blah blah"
                },
                {
                    "id": "fghi",
                    "keyZ": "blah blah blah"
                }
            ],
            "anothernestednestedlist": [
                {
                    "id": "asdf",
                    "keyQ": "blah blah"
                },
                {
                    "id": "yuiop",
                    "keyW": "blah"
                }
            ]
        }
    ]
}

Le but est d'extraire toutes les valeurs associées à la clé "id".

Solution :
Pour parcourir et extraire les valeurs "id" de cette structure complexe, plusieurs approches peuvent être utilisées. Certaines des techniques couramment utilisées incluent :

  • Fonction de générateur récursif : Cette méthode utilise une fonction de générateur pour parcourir la structure de données de manière récursive, en vérifiant la clé « id » et en produisant le valeurs correspondantes.
  • Recherche en profondeur d'abord (DFS) avec une pile : Une approche DFS peut être mise en œuvre en utilisant une pile pour pousser des éléments sur une pile, en les visitant dans un premier ordre -out order, et recherche de la clé "id" à chaque étape.
  • Recherche en profondeur d'abord (DFS) avec récursion : Semblable à l'utilisation d'une pile, la récursivité peut être utilisée pour un Traversée DFS, avec la fonction s'appelant de manière récursive pour explorer les branches de la structure de données et rechercher la clé "id".

Comparaison des performances :
Pour déterminer le plus approche efficace, les techniques mentionnées ont été testées sur des structures de données complexes contenant 100 000 itérations. Les résultats de performances ont révélé ce qui suit :

  • le plus rapide et le plus sûr : gen_dict_extract
  • le plus lent et le plus sujet aux erreurs : find_all_items
  • Performances de milieu de gamme : findkeys, get_recursively, find, dict_extract

Conclusion :
Pour parcourir des structures de données complexes et extraire les valeurs associées avec une clé spécifique, l'utilisation d'une fonction génératrice récursive comme gen_dict_extract offre une efficacité et une fiabilité optimales.

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