Défi : Recherche de Fichiers Récursive
Travail avec des dictionnaires imbriqués
En Python, les dictionnaires peuvent contenir d'autres dictionnaires. Ceci est utile pour représenter des structures hiérarchiques telles qu’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.
Utiliser 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)
- 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) :
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 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
.
- Utilisez une boucle
for
pour itérer sur tous les éléments du dictionnairefile_system
en utilisant la méthodeitems()
. Cela permet de récupérer la clé (name
) et la valeur (content
). - Vérifiez si
content
est un fichier (c'est-à-dire la chaîne de caractères"file"
) et siname
correspond àtarget
(le nom du fichier recherché). - Si les deux conditions sont remplies, retournez
True
, indiquant que le fichier a été trouvé. - Si content n'est pas un fichier, vérifiez s'il s'agit d'un dossier.
Utilisez la fonction
isinstance()
, en passantcontent
comme premier argument etdict
comme second (ce qui vérifie si l'élément est un dictionnaire). - Si
content
est un dossier, appelez récursivementfile_exists
avec les paramètres nécessaires pour continuer la recherche à l'intérieur. - Si l'appel récursif retourne
True
, le fichier a été trouvé, donc retournezTrue
. - Si aucune correspondance n'est trouvée après avoir vérifié tous les dossiers et fichiers, 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
Awesome!
Completion rate improved to 4.35
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. Ceci est utile pour représenter des structures hiérarchiques telles qu’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.
Utiliser 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)
- 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) :
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 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
.
- Utilisez une boucle
for
pour itérer sur tous les éléments du dictionnairefile_system
en utilisant la méthodeitems()
. Cela permet de récupérer la clé (name
) et la valeur (content
). - Vérifiez si
content
est un fichier (c'est-à-dire la chaîne de caractères"file"
) et siname
correspond àtarget
(le nom du fichier recherché). - Si les deux conditions sont remplies, retournez
True
, indiquant que le fichier a été trouvé. - Si content n'est pas un fichier, vérifiez s'il s'agit d'un dossier.
Utilisez la fonction
isinstance()
, en passantcontent
comme premier argument etdict
comme second (ce qui vérifie si l'élément est un dictionnaire). - Si
content
est un dossier, appelez récursivementfile_exists
avec les paramètres nécessaires pour continuer la recherche à l'intérieur. - Si l'appel récursif retourne
True
, le fichier a été trouvé, donc retournezTrue
. - Si aucune correspondance n'est trouvée après avoir vérifié tous les dossiers et fichiers, retournez
False
.
Solution
Merci pour vos commentaires !
Awesome!
Completion rate improved to 4.35single