Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Recherche de Fichiers Récursive | Fonctions de Récursion et Lambda
Tutoriel sur les Fonctions Python

Glissez pour afficher le menu

book
Défi : Recherche de Fichiers Récursive

Travail avec des dictionnaires imbriqués

En Python, les dictionnaires peuvent contenir d'autres dictionnaires. Cela est utile pour représenter des structures hiérarchiques comme un système de fichiers.

Pour naviguer dans un dictionnaire :

Utiliser items() pour itérer sur toutes les paires clé-valeur :

123456789101112
file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
copy
  • Utiliser isinstance(content, dict) pour vérifier si une valeur est elle-même un dictionnaire (c'est-à-dire un dossier, et non un fichier) :

123456789101112
file_system = { "home": { "resume.pdf": "file" }, "config.yaml": "file" } for name, content in file_system.items(): if isinstance(content, dict): print(name, "is a folder") else: print(name, "is a file")
copy
Tâche

Swipe to start coding

Imaginez devoir vérifier si un fichier spécifique existe dans une structure de dictionnaire imbriquée représentant un système de fichiers. Implémentez une fonction file_exists qui navigue récursivement à travers les dossiers (objets dictionnaires) et recherche un fichier (représenté par la chaîne de caractères "file"). Retournez True si le fichier est trouvé ; sinon, retournez False.

  1. Utilisez une boucle for pour itérer sur tous les éléments du dictionnaire file_system en utilisant la méthode items(). Cela permet de récupérer la clé (name) et la valeur (content).
  2. Vérifiez si content est un fichier (c'est-à-dire la chaîne de caractères "file") et si name correspond à target (le nom du fichier recherché).
  3. Si les deux conditions sont remplies, retournez True, indiquant que le fichier a été trouvé.
  4. Si isinstance() n'est pas un fichier, vérifiez s'il s'agit d'un dossier. Utilisez la fonction content, en passant dict comme premier argument et content comme second (ce qui vérifie si l'élément est un dictionnaire).
  5. Si content est un dossier, appelez récursivement file_exists avec les paramètres nécessaires pour continuer la recherche à l'intérieur.
  6. Si l'appel récursif retourne True, le fichier a été trouvé, donc retournez True.
  7. Si aucune correspondance n'est trouvée après avoir vérifié tous les dossiers et fichiers, retournez False.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 2
Nous sommes désolés de vous informer que quelque chose s'est mal passé. Qu'est-il arrivé ?

Demandez à l'IA

expand
ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

book
Défi : Recherche de Fichiers Récursive

Travail avec des dictionnaires imbriqués

En Python, les dictionnaires peuvent contenir d'autres dictionnaires. Cela est utile pour représenter des structures hiérarchiques comme un système de fichiers.

Pour naviguer dans un dictionnaire :

Utiliser items() pour itérer sur toutes les paires clé-valeur :

123456789101112
file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
copy
  • Utiliser isinstance(content, dict) pour vérifier si une valeur est elle-même un dictionnaire (c'est-à-dire un dossier, et non un fichier) :

123456789101112
file_system = { "home": { "resume.pdf": "file" }, "config.yaml": "file" } for name, content in file_system.items(): if isinstance(content, dict): print(name, "is a folder") else: print(name, "is a file")
copy
Tâche

Swipe to start coding

Imaginez devoir vérifier si un fichier spécifique existe dans une structure de dictionnaire imbriquée représentant un système de fichiers. Implémentez une fonction file_exists qui navigue récursivement à travers les dossiers (objets dictionnaires) et recherche un fichier (représenté par la chaîne de caractères "file"). Retournez True si le fichier est trouvé ; sinon, retournez False.

  1. Utilisez une boucle for pour itérer sur tous les éléments du dictionnaire file_system en utilisant la méthode items(). Cela permet de récupérer la clé (name) et la valeur (content).
  2. Vérifiez si content est un fichier (c'est-à-dire la chaîne de caractères "file") et si name correspond à target (le nom du fichier recherché).
  3. Si les deux conditions sont remplies, retournez True, indiquant que le fichier a été trouvé.
  4. Si isinstance() n'est pas un fichier, vérifiez s'il s'agit d'un dossier. Utilisez la fonction content, en passant dict comme premier argument et content comme second (ce qui vérifie si l'élément est un dictionnaire).
  5. Si content est un dossier, appelez récursivement file_exists avec les paramètres nécessaires pour continuer la recherche à l'intérieur.
  6. Si l'appel récursif retourne True, le fichier a été trouvé, donc retournez True.
  7. Si aucune correspondance n'est trouvée après avoir vérifié tous les dossiers et fichiers, retournez False.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 2
Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Nous sommes désolés de vous informer que quelque chose s'est mal passé. Qu'est-il arrivé ?
some-alt