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 zur Darstellung hierarchischer Strukturen wie eines Dateisystems.

In diesem Fall:

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

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, 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 (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.

  1. Verwenden Sie eine for-Schleife, um alle Elemente des file_system-Dictionaries mit der Methode items() zu durchlaufen. Dadurch werden der Schlüssel (name) und der Wert (content) abgerufen.
  2. Überprüfen Sie, ob content eine Datei ist (d. h. der String "file") und ob name mit target (dem Namen der gesuchten Datei) übereinstimmt.
  3. Wenn beide Bedingungen erfüllt sind, geben Sie True zurück, was bedeutet, dass die Datei gefunden wurde.
  4. Wenn isinstance() keine Datei ist, prüfen Sie, ob es sich um einen Ordner handelt. Verwenden Sie die Funktion content, wobei Sie dict als erstes Argument und content als zweites übergeben (dies prüft, ob das Element ein Dictionary ist).
  5. Wenn content ein Ordner ist, rufen Sie file_exists rekursiv mit den notwendigen Parametern auf, um die Suche darin fortzusetzen.
  6. Wenn der rekursive Aufruf True zurückgibt, wurde die Datei gefunden, daher geben Sie True zurück.
  7. Wenn keine Übereinstimmung nach Überprüfung aller Ordner und Dateien gefunden wurde, 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

Suggested prompts:

Can you explain how to recursively print all files and folders in this structure?

How can I add a new file or folder to this nested dictionary?

What are some real-world use cases for representing data like this?

close

Awesome!

Completion rate improved to 4.17

bookHerausforderung: Rekursive Dateisuche

Swipe um das Menü anzuzeigen

Arbeiten mit verschachtelten Dictionaries

In Python können Dictionaries andere Dictionaries enthalten. Dies ist nützlich zur Darstellung hierarchischer Strukturen wie eines Dateisystems.

In diesem Fall:

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

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, 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 (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.

  1. Verwenden Sie eine for-Schleife, um alle Elemente des file_system-Dictionaries mit der Methode items() zu durchlaufen. Dadurch werden der Schlüssel (name) und der Wert (content) abgerufen.
  2. Überprüfen Sie, ob content eine Datei ist (d. h. der String "file") und ob name mit target (dem Namen der gesuchten Datei) übereinstimmt.
  3. Wenn beide Bedingungen erfüllt sind, geben Sie True zurück, was bedeutet, dass die Datei gefunden wurde.
  4. Wenn isinstance() keine Datei ist, prüfen Sie, ob es sich um einen Ordner handelt. Verwenden Sie die Funktion content, wobei Sie dict als erstes Argument und content als zweites übergeben (dies prüft, ob das Element ein Dictionary ist).
  5. Wenn content ein Ordner ist, rufen Sie file_exists rekursiv mit den notwendigen Parametern auf, um die Suche darin fortzusetzen.
  6. Wenn der rekursive Aufruf True zurückgibt, wurde die Datei gefunden, daher geben Sie True zurück.
  7. Wenn keine Übereinstimmung nach Überprüfung aller Ordner und Dateien gefunden wurde, 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!

Abschnitt 5. Kapitel 2
single

single

some-alt