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.
In diesem Fall gilt:
- Schlüssel sind Namen (entweder von Dateien oder Ordnern);
- Wenn der Wert der String
"file"
ist, handelt es sich um eine Datei; - Wenn der Wert ein weiteres Dictionary ist, handelt es sich um einen Ordner.
Verwenden Sie items()
, um alle Schlüssel-Wert-Paare zu durchlaufen:
123456789101112file_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):
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
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 (dargestellt durch den String "file"
) sucht. Geben Sie True
zurück, wenn die Datei gefunden wurde; ansonsten geben Sie False
zurück.
- Verwenden Sie eine
for
-Schleife, um alle Elemente desfile_system
-Dictionarys mit der Methodeitems()
zu durchlaufen. Dadurch werden der Schlüssel (name
) und der Wert (content
) abgerufen. - Überprüfen Sie, ob
content
eine Datei ist (d. h. der String"file"
) und obname
mittarget
übereinstimmt. - Wenn beide Bedingungen erfüllt sind, geben Sie
True
zurück. - Wenn
isinstance()
keine Datei ist, prüfen Sie mitcontent
, ob es sich um einen Ordner handelt. Hierbei dientdict
als erstes Argument undcontent
als zweites. - Wenn es sich um einen Ordner handelt, rufen Sie
file_exists
rekursiv auf, um die Suche darin fortzusetzen. - Wenn der rekursive Aufruf
True
zurückgibt, geben SieTrue
zurück. - Wenn die Schleife endet, ohne die Datei gefunden zu haben, geben Sie
False
zurück.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 4.35
Herausforderung: Rekursive Dateisuche
Swipe um das Menü anzuzeigen
Arbeiten mit verschachtelten Dictionaries
In Python können Dictionaries andere Dictionaries enthalten. Dies ist nützlich, um hierarchische Strukturen wie ein Dateisystem darzustellen.
In diesem Fall gilt:
- Schlüssel sind Namen (entweder von Dateien oder Ordnern);
- Wenn der Wert der String
"file"
ist, handelt es sich um eine Datei; - Wenn der Wert ein weiteres Dictionary ist, handelt es sich um einen Ordner.
Verwenden Sie items()
, um alle Schlüssel-Wert-Paare zu durchlaufen:
123456789101112file_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):
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
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 (dargestellt durch den String "file"
) sucht. Geben Sie True
zurück, wenn die Datei gefunden wurde; ansonsten geben Sie False
zurück.
- Verwenden Sie eine
for
-Schleife, um alle Elemente desfile_system
-Dictionarys mit der Methodeitems()
zu durchlaufen. Dadurch werden der Schlüssel (name
) und der Wert (content
) abgerufen. - Überprüfen Sie, ob
content
eine Datei ist (d. h. der String"file"
) und obname
mittarget
übereinstimmt. - Wenn beide Bedingungen erfüllt sind, geben Sie
True
zurück. - Wenn
isinstance()
keine Datei ist, prüfen Sie mitcontent
, ob es sich um einen Ordner handelt. Hierbei dientdict
als erstes Argument undcontent
als zweites. - Wenn es sich um einen Ordner handelt, rufen Sie
file_exists
rekursiv auf, um die Suche darin fortzusetzen. - Wenn der rekursive Aufruf
True
zurückgibt, geben SieTrue
zurück. - Wenn die Schleife endet, ohne die Datei gefunden zu haben, geben Sie
False
zurück.
Lösung
Danke für Ihr Feedback!
single