Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Rekursive Dateisuche | Rekursion und Lambda-Funktionen
Python-Funktionen-Tutorial

bookHerausforderung: 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:

123456789101112
file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
copy
  • Verwenden Sie isinstance(content, dict), um zu prüfen, ob ein Wert selbst ein Dictionary ist (d. h. ein Ordner und keine Datei):
123456789101112
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")
copy
Aufgabe

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.

  1. Verwenden Sie eine for-Schleife, um das file_system-Dictionary mit der Methode items() zu durchlaufen.
  2. Dadurch werden der Schlüssel (name) und der Wert (content) abgerufen.
  3. Überprüfen Sie, ob content == "file" und name == target.
  4. Wenn beide Bedingungen erfüllt sind, geben Sie True zurück.
  5. Falls isinstance() keine Datei ist, prüfen Sie mit content, und verwenden Sie dict als zweites Argument.
  6. Wenn es sich um einen Ordner handelt, rufen Sie content rekursiv mit file_exists und target auf.
  7. Gibt der rekursive Aufruf True zurück, geben Sie ebenfalls True zurück.
  8. Wird kein Treffer erzielt, geben Sie False zurück.

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 2
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

close

Awesome!

Completion rate improved to 4.35

bookHerausforderung: 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:

123456789101112
file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
copy
  • Verwenden Sie isinstance(content, dict), um zu prüfen, ob ein Wert selbst ein Dictionary ist (d. h. ein Ordner und keine Datei):
123456789101112
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")
copy
Aufgabe

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.

  1. Verwenden Sie eine for-Schleife, um das file_system-Dictionary mit der Methode items() zu durchlaufen.
  2. Dadurch werden der Schlüssel (name) und der Wert (content) abgerufen.
  3. Überprüfen Sie, ob content == "file" und name == target.
  4. Wenn beide Bedingungen erfüllt sind, geben Sie True zurück.
  5. Falls isinstance() keine Datei ist, prüfen Sie mit content, und verwenden Sie dict als zweites Argument.
  6. Wenn es sich um einen Ordner handelt, rufen Sie content rekursiv mit file_exists und target auf.
  7. Gibt der rekursive Aufruf True zurück, geben Sie ebenfalls True zurück.
  8. Wird kein Treffer erzielt, geben Sie False zurück.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

close

Awesome!

Completion rate improved to 4.35
Abschnitt 5. Kapitel 2
single

single

some-alt