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);
- Ist der Wert der String
"file"
, handelt es sich um eine Datei; - Ist der Wert ein weiteres Dictionary, 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 navigiert und nach einer Datei (dargestellt durch den String "file"
) sucht. Geben Sie True
zurück, wenn die Datei gefunden wurde; andernfalls False
.
- Verwenden Sie eine
for
-Schleife, um dasfile_system
-Dictionary mit der Methodeitems()
zu durchlaufen. - Dadurch werden der Schlüssel (
name
) und der Wert (content
) abgerufen. - Überprüfen Sie, ob
content
=="file"
undname
==target
. - Wenn beide Bedingungen erfüllt sind, geben Sie
True
zurück. - Falls
isinstance()
keine Datei ist, prüfen Sie mitcontent
, und verwenden Siedict
als zweites Argument. - Wenn es sich um einen Ordner handelt, rufen Sie
content
rekursiv mitfile_exists
und target auf. - Gibt der rekursive Aufruf
True
zurück, geben Sie ebenfallsTrue
zurück. - Wird kein Treffer erzielt, 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);
- Ist der Wert der String
"file"
, handelt es sich um eine Datei; - Ist der Wert ein weiteres Dictionary, 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 navigiert und nach einer Datei (dargestellt durch den String "file"
) sucht. Geben Sie True
zurück, wenn die Datei gefunden wurde; andernfalls False
.
- Verwenden Sie eine
for
-Schleife, um dasfile_system
-Dictionary mit der Methodeitems()
zu durchlaufen. - Dadurch werden der Schlüssel (
name
) und der Wert (content
) abgerufen. - Überprüfen Sie, ob
content
=="file"
undname
==target
. - Wenn beide Bedingungen erfüllt sind, geben Sie
True
zurück. - Falls
isinstance()
keine Datei ist, prüfen Sie mitcontent
, und verwenden Siedict
als zweites Argument. - Wenn es sich um einen Ordner handelt, rufen Sie
content
rekursiv mitfile_exists
und target auf. - Gibt der rekursive Aufruf
True
zurück, geben Sie ebenfallsTrue
zurück. - Wird kein Treffer erzielt, geben Sie
False
zurück.
Lösung
Danke für Ihr Feedback!
Awesome!
Completion rate improved to 4.35single