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
Libérer: 2024-11-29 17:56:14
original
707 Les gens l'ont consulté

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))
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal