Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Recursieve Bestandszoekopdracht | Recursie en Lambda-Functies
Python Functies Tutorial

bookUitdaging: Recursieve Bestandszoekopdracht

Werken met geneste woordenboeken

In Python kunnen woordenboeken andere woordenboeken bevatten. Dit is handig voor het weergeven van hiërarchische structuren zoals een bestandssysteem.

In dit geval:

  • Sleutels zijn namen (van bestanden of mappen);
  • Als de waarde de string "file" is, betekent dit dat het een bestand is;
  • Als de waarde een ander woordenboek is, betekent dit dat het een map is.

Gebruik items() om door alle sleutel-waardeparen te itereren:

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
  • Gebruik isinstance(content, dict) om te controleren of een waarde zelf een woordenboek is (d.w.z. een map, geen bestand):
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
Taak

Swipe to start coding

Stel je voor dat je moet controleren of een specifiek bestand bestaat binnen een geneste woordenboekstructuur die een bestandssysteem voorstelt. Implementeer een functie file_exists die recursief navigeert door mappen (woordenboekobjecten) en zoekt naar een bestand (weergegeven door de string "file"). Geef True terug als het bestand is gevonden; anders geef je False terug.

  1. Gebruik een for-lus om te itereren door alle elementen van het file_system woordenboek met de items()-methode. Hiermee worden de sleutel (name) en de waarde (content) opgehaald.
  2. Controleer of content een bestand is (d.w.z. de string "file") en of name overeenkomt met target (de naam van het gezochte bestand).
  3. Als beide voorwaarden zijn voldaan, geef dan True terug, wat aangeeft dat het bestand is gevonden.
  4. Als content geen bestand is, controleer dan of het een map is. Gebruik de functie isinstance(), waarbij je content als eerste argument en dict als tweede meegeeft (dit controleert of het element een woordenboek is).
  5. Als content een map is, roep dan file_exists recursief aan met de benodigde parameters om verder te zoeken erin.
  6. Als de recursieve aanroep True retourneert, is het bestand gevonden, dus geef True terug.
  7. Als er geen overeenkomsten zijn gevonden na het controleren van alle mappen en bestanden, geef dan False terug.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 2
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

close

Awesome!

Completion rate improved to 4.35

bookUitdaging: Recursieve Bestandszoekopdracht

Veeg om het menu te tonen

Werken met geneste woordenboeken

In Python kunnen woordenboeken andere woordenboeken bevatten. Dit is handig voor het weergeven van hiërarchische structuren zoals een bestandssysteem.

In dit geval:

  • Sleutels zijn namen (van bestanden of mappen);
  • Als de waarde de string "file" is, betekent dit dat het een bestand is;
  • Als de waarde een ander woordenboek is, betekent dit dat het een map is.

Gebruik items() om door alle sleutel-waardeparen te itereren:

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
  • Gebruik isinstance(content, dict) om te controleren of een waarde zelf een woordenboek is (d.w.z. een map, geen bestand):
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
Taak

Swipe to start coding

Stel je voor dat je moet controleren of een specifiek bestand bestaat binnen een geneste woordenboekstructuur die een bestandssysteem voorstelt. Implementeer een functie file_exists die recursief navigeert door mappen (woordenboekobjecten) en zoekt naar een bestand (weergegeven door de string "file"). Geef True terug als het bestand is gevonden; anders geef je False terug.

  1. Gebruik een for-lus om te itereren door alle elementen van het file_system woordenboek met de items()-methode. Hiermee worden de sleutel (name) en de waarde (content) opgehaald.
  2. Controleer of content een bestand is (d.w.z. de string "file") en of name overeenkomt met target (de naam van het gezochte bestand).
  3. Als beide voorwaarden zijn voldaan, geef dan True terug, wat aangeeft dat het bestand is gevonden.
  4. Als content geen bestand is, controleer dan of het een map is. Gebruik de functie isinstance(), waarbij je content als eerste argument en dict als tweede meegeeft (dit controleert of het element een woordenboek is).
  5. Als content een map is, roep dan file_exists recursief aan met de benodigde parameters om verder te zoeken erin.
  6. Als de recursieve aanroep True retourneert, is het bestand gevonden, dus geef True terug.
  7. Als er geen overeenkomsten zijn gevonden na het controleren van alle mappen en bestanden, geef dan False terug.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 2
single

single

some-alt