Herausforderung: Rekursive Dateisuche
Arbeiten mit verschachtelten Dictionaries
In Python können Dictionaries andere Dictionaries enthalten. Dies ist nützlich, um hierarchische Strukturen wie ein Dateisystem darzustellen.
Um ein Dictionary zu durchlaufen:
Verwenden Sie items()
, um alle Schlüssel-Wert-Paare zu iterieren:
file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
Verwenden Sie isinstance(content, dict), um zu prüfen, ob ein Wert selbst ein Dictionary ist (d. h. ein Ordner und keine Datei):
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")
Swipe to start coding
Stellen Sie sich vor, Sie müssen überprüfen, ob eine bestimmte Datei existiert innerhalb einer verschachtelten Dictionary-Struktur, die ein Dateisystem repräsentiert. Implementieren Sie eine Funktion file_exists
, die rekursiv durch Ordner (Dictionary-Objekte) navigiert und nach einer Datei (repräsentiert durch den String "file"
) sucht. Geben Sie True
zurück, wenn die Datei gefunden wurde; andernfalls geben Sie False
zurück.
- Verwenden Sie eine
for
-Schleife, um alle Elemente desfile_system
-Dictionaries mit der Methodeitems()
zu durchlaufen. Dadurch werden der Schlüssel (name
) und der Wert (content
) abgerufen. - Überprüfen Sie, ob
content
die Datei ist (also der String"file"
) und obname
mittarget
übereinstimmt. - Wenn beide Bedingungen erfüllt sind, geben Sie
True
zurück, um anzuzeigen, dass die Datei gefunden wurde. - Wenn content keine Datei ist, verwenden Sie die Funktion
isinstance()
, um zu prüfen, ob es sich beicontent
um einen Ordner handelt, indem Sie als zweites Argumentdict
übergeben. - Wenn
content
ein Ordner ist, rufen Siefile_exists
rekursiv auf, um die Suche dort fortzusetzen. - Wenn der rekursive Aufruf
True
zurückgibt, geben Sie anschließendTrue
zurück. - Wenn keine Übereinstimmung in allen Ordnern und Dateien gefunden wird, geben Sie
False
zurück.
Lösung
Danke für Ihr Feedback!