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 | Récursivité et Fonctions Lambda
Tutoriel sur les Fonctions Python

bookDé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.

Dans ce cas :

  • Les clés sont des noms (de fichiers ou de dossiers) ;
  • Si la valeur est la chaîne "file", cela signifie qu'il s'agit d'un fichier ;
  • Si la valeur est un autre dictionnaire, cela signifie qu'il s'agit d'un dossier.

Utilisez 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
  • Utilisez 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 dictionnaires imbriquée représentant un système de fichiers. Implémentez une fonction file_exists qui navigue récursivement à travers les dossiers 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 avec la méthode items(). Cela permet de récupérer la clé (name) et la valeur (content).
  2. Vérifiez si content est une chaîne de caractères "file" et si name correspond à target.
  3. Si ces deux conditions sont remplies, retournez True.
  4. Si l’élément n’est pas un fichier, vérifiez s’il s’agit d’un dossier à l’aide de la fonction isinstance() en passant content comme premier argument et dict comme second.
  5. Si content est un dossier, appelez récursivement file_exists pour continuer la recherche à l’intérieur.
  6. Si l’appel récursif retourne True, retournez également True.
  7. Si la boucle se termine sans avoir trouvé le fichier, retournez False.

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 2
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

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

Suggested prompts:

Can you explain how to recursively print all files and folders in this structure?

How can I add a new file or folder to this nested dictionary?

What are some real-world use cases for representing data like this?

close

Awesome!

Completion rate improved to 4.17

bookDéfi : Recherche de Fichiers Récursive

Glissez pour afficher le menu

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.

Dans ce cas :

  • Les clés sont des noms (de fichiers ou de dossiers) ;
  • Si la valeur est la chaîne "file", cela signifie qu'il s'agit d'un fichier ;
  • Si la valeur est un autre dictionnaire, cela signifie qu'il s'agit d'un dossier.

Utilisez 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
  • Utilisez 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 dictionnaires imbriquée représentant un système de fichiers. Implémentez une fonction file_exists qui navigue récursivement à travers les dossiers 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 avec la méthode items(). Cela permet de récupérer la clé (name) et la valeur (content).
  2. Vérifiez si content est une chaîne de caractères "file" et si name correspond à target.
  3. Si ces deux conditions sont remplies, retournez True.
  4. Si l’élément n’est pas un fichier, vérifiez s’il s’agit d’un dossier à l’aide de la fonction isinstance() en passant content comme premier argument et dict comme second.
  5. Si content est un dossier, appelez récursivement file_exists pour continuer la recherche à l’intérieur.
  6. Si l’appel récursif retourne True, retournez également True.
  7. Si la boucle se termine sans avoir trouvé le fichier, 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
single

single

some-alt