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.
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 :
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- 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) :
123456789101112file_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")
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.
- Utilisez une boucle
forpour itérer sur tous les éléments du dictionnairefile_systemavec la méthodeitems(). Cela permet de récupérer la clé (name) et la valeur (content). - Vérifiez si
contentest une chaîne de caractères"file"et sinamecorrespond àtarget. - Si ces deux conditions sont remplies, retournez
True. - 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 passantcontentcomme premier argument etdictcomme second. - Si
contentest un dossier, appelez récursivementfile_existspour continuer la recherche à l’intérieur. - Si l’appel récursif retourne
True, retournez égalementTrue. - Si la boucle se termine sans avoir trouvé le fichier, retournez
False.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
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?
Awesome!
Completion rate improved to 4.17
Dé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 :
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- 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) :
123456789101112file_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")
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.
- Utilisez une boucle
forpour itérer sur tous les éléments du dictionnairefile_systemavec la méthodeitems(). Cela permet de récupérer la clé (name) et la valeur (content). - Vérifiez si
contentest une chaîne de caractères"file"et sinamecorrespond àtarget. - Si ces deux conditions sont remplies, retournez
True. - 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 passantcontentcomme premier argument etdictcomme second. - Si
contentest un dossier, appelez récursivementfile_existspour continuer la recherche à l’intérieur. - Si l’appel récursif retourne
True, retournez égalementTrue. - Si la boucle se termine sans avoir trouvé le fichier, retournez
False.
Solution
Merci pour vos commentaires !
single