Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utfordring: Rekursivt Filsøk | Rekursjon og Lambda-funksjoner
Python Funksjoner Veiledning

bookUtfordring: Rekursivt Filsøk

Arbeide med nestede ordbøker

I Python kan ordbøker inneholde andre ordbøker. Dette er nyttig for å representere hierarkiske strukturer som et filsystem.

I dette tilfellet:

  • Nøkler er navn (enten på filer eller mapper);
  • Hvis verdien er strengen "file", betyr det at det er en fil;
  • Hvis verdien er en annen ordbok, betyr det at det er en mappe.

Bruk items() for å iterere gjennom alle nøkkel-verdi-par:

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
  • Bruk isinstance(content, dict) for å sjekke om en verdi selv er en ordbok (dvs. en mappe, ikke en fil):
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
Oppgave

Swipe to start coding

Tenk deg at du må sjekke om en bestemt fil finnes i en nøstet ordbokstruktur som representerer et filsystem. Implementer en funksjon file_exists som navigerer rekursivt gjennom mapper (ordbokobjekter) og søker etter en fil (representert ved strengen "file"). Returner True hvis filen finnes; ellers returner False.

  1. Bruk en for-løkke for å iterere gjennom alle elementene i file_system-ordboken ved å bruke items()-metoden. Dette henter ut nøkkelen (name) og verdien (content).
  2. Sjekk om content er en fil (altså strengen "file") og om name samsvarer med target (navnet på filen det søkes etter).
  3. Hvis begge betingelsene er oppfylt, returner True, noe som indikerer at filen er funnet.
  4. Hvis innholdet ikke er en fil, sjekk om det er en mappe. Bruk funksjonen isinstance() og send inn content som første argument og dict som andre (dette sjekker om elementet er en ordbok).
  5. Hvis content er en mappe, kall file_exists rekursivt med de nødvendige parameterne for å fortsette søket inni mappen.
  6. Hvis det rekursive kallet returnerer True, er filen funnet, så returner True.
  7. Hvis ingen treff finnes etter å ha sjekket alle mapper og filer, returner False.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 2
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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.35

bookUtfordring: Rekursivt Filsøk

Sveip for å vise menyen

Arbeide med nestede ordbøker

I Python kan ordbøker inneholde andre ordbøker. Dette er nyttig for å representere hierarkiske strukturer som et filsystem.

I dette tilfellet:

  • Nøkler er navn (enten på filer eller mapper);
  • Hvis verdien er strengen "file", betyr det at det er en fil;
  • Hvis verdien er en annen ordbok, betyr det at det er en mappe.

Bruk items() for å iterere gjennom alle nøkkel-verdi-par:

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
  • Bruk isinstance(content, dict) for å sjekke om en verdi selv er en ordbok (dvs. en mappe, ikke en fil):
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
Oppgave

Swipe to start coding

Tenk deg at du må sjekke om en bestemt fil finnes i en nøstet ordbokstruktur som representerer et filsystem. Implementer en funksjon file_exists som navigerer rekursivt gjennom mapper (ordbokobjekter) og søker etter en fil (representert ved strengen "file"). Returner True hvis filen finnes; ellers returner False.

  1. Bruk en for-løkke for å iterere gjennom alle elementene i file_system-ordboken ved å bruke items()-metoden. Dette henter ut nøkkelen (name) og verdien (content).
  2. Sjekk om content er en fil (altså strengen "file") og om name samsvarer med target (navnet på filen det søkes etter).
  3. Hvis begge betingelsene er oppfylt, returner True, noe som indikerer at filen er funnet.
  4. Hvis innholdet ikke er en fil, sjekk om det er en mappe. Bruk funksjonen isinstance() og send inn content som første argument og dict som andre (dette sjekker om elementet er en ordbok).
  5. Hvis content er en mappe, kall file_exists rekursivt med de nødvendige parameterne for å fortsette søket inni mappen.
  6. Hvis det rekursive kallet returnerer True, er filen funnet, så returner True.
  7. Hvis ingen treff finnes etter å ha sjekket alle mapper og filer, returner False.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 2
single

single

some-alt