Maison >développement back-end >Tutoriel Python >Comment puis-je itérer et imprimer de manière récursive des paires clé-valeur à partir d'un dictionnaire imbriqué ?

Comment puis-je itérer et imprimer de manière récursive des paires clé-valeur à partir d'un dictionnaire imbriqué ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-29 17:56:14825parcourir

How Can I Recursively Iterate and Print Key-Value Pairs from a Nested Dictionary?

Itération à travers les valeurs de dictionnaire imbriquées

Dans ce scénario de programmation, notre objectif est de parcourir une structure de dictionnaire potentiellement multicouche et d'imprimer des paires clé-valeur où les valeurs sont pas les dictionnaires imbriqués eux-mêmes. Si une valeur s'avère être un dictionnaire imbriqué, nous devons l'explorer de manière récursive et imprimer également ses paires clé-valeur.

Pour y parvenir, de simples techniques d'itération peuvent ne pas suffire. Au lieu de cela, nous pouvons exploiter le pouvoir de la récursion. Voici une fonction révisée qui intègre la récursion pour gérer efficacement les dictionnaires imbriqués de n'importe quelle profondeur :

def myprint(d):
    for k, v in d.items():
        if isinstance(v, dict):
            myprint(v)
        else:
            print("{0} : {1}".format(k, v))

En appelant myprint avec le dictionnaire initial, la fonction entre dans une boucle récursive. Il visite chaque paire clé-valeur et vérifie si la valeur est un dictionnaire. Si tel est le cas, la fonction s'appelle elle-même avec le dictionnaire de valeurs comme nouvelle entrée, explorant efficacement tous les niveaux imbriqués.

Si la valeur n'est pas un dictionnaire, la fonction imprime simplement la paire clé-valeur actuelle. Ce processus se poursuit jusqu'à ce que tous les niveaux du dictionnaire aient été parcourus.

Voici une démonstration utilisant un exemple de dictionnaire imbriqué :

d = {
    "xml": {
        "config": {
            "portstatus": {"status": "good"},
            "target": "1",
        },
        "port": "11",
    }
}

myprint(d)

Cela produira le résultat souhaité :

xml : {config: {portstatus: {status: good}, target: 1}, port: 11}
config : {portstatus: {status: good}, target: 1}
portstatus : {status: good}
status : good
target : 1
port : 11

Comme vous pouvez le voir, la fonction parcourt le dictionnaire de manière récursive, imprimant toutes les valeurs non imbriquées et explorant les dictionnaires imbriqués jusqu'à ce qu'elle atteigne la feuille. nœuds.

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