Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Rekursiv Filsøgning | Rekursion og Lambda-Funktioner
Python Funktioner Vejledning

bookUdfordring: Rekursiv Filsøgning

Arbejde med indlejrede ordbøger

I Python kan ordbøger indeholde andre ordbøger. Dette er nyttigt til at repræsentere hierarkiske strukturer som et filsystem.

I dette tilfælde:

  • Nøgler er navne (enten på filer eller mapper);
  • Hvis værdien er strengen "file", betyder det, at det er en fil;
  • Hvis værdien er en anden ordbog, betyder det, at det er en mappe.

Brug items() til at iterere gennem alle nøgle-værdi-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
  • Brug isinstance(content, dict) til at kontrollere, om en værdi selv er en ordbog (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
Opgave

Swipe to start coding

Forestil dig, at du skal kontrollere, om en bestemt fil eksisterer i en indlejret ordbogsstruktur, der repræsenterer et filsystem. Implementér en funktion file_exists, der navigerer rekursivt gennem mapper (ordbogsobjekter) og søger efter en fil (repræsenteret ved strengen "file"). Returnér True, hvis filen findes; ellers returnér False.

  1. Brug en for-løkke til at iterere gennem alle elementer i file_system-ordbogen ved hjælp af metoden items(). Dette henter nøglen (name) og værdien (content).
  2. Kontroller, om content er en fil (dvs. strengen "file"), og om name matcher target (navnet på den fil, der søges efter).
  3. Hvis begge betingelser er opfyldt, returnér True, hvilket indikerer, at filen er fundet.
  4. Hvis content ikke er en fil, kontroller om det er en mappe. Brug funktionen isinstance(), hvor du giver content som første argument og dict som andet (som tjekker, om elementet er en ordbog).
  5. Hvis content er en mappe, kald file_exists rekursivt med de nødvendige parametre for at fortsætte søgningen inden i den.
  6. Hvis det rekursive kald returnerer True, er filen fundet, så returnér True.
  7. Hvis ingen match findes efter at have tjekket alle mapper og filer, returnér False.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 2
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

bookUdfordring: Rekursiv Filsøgning

Stryg for at vise menuen

Arbejde med indlejrede ordbøger

I Python kan ordbøger indeholde andre ordbøger. Dette er nyttigt til at repræsentere hierarkiske strukturer som et filsystem.

I dette tilfælde:

  • Nøgler er navne (enten på filer eller mapper);
  • Hvis værdien er strengen "file", betyder det, at det er en fil;
  • Hvis værdien er en anden ordbog, betyder det, at det er en mappe.

Brug items() til at iterere gennem alle nøgle-værdi-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
  • Brug isinstance(content, dict) til at kontrollere, om en værdi selv er en ordbog (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
Opgave

Swipe to start coding

Forestil dig, at du skal kontrollere, om en bestemt fil eksisterer i en indlejret ordbogsstruktur, der repræsenterer et filsystem. Implementér en funktion file_exists, der navigerer rekursivt gennem mapper (ordbogsobjekter) og søger efter en fil (repræsenteret ved strengen "file"). Returnér True, hvis filen findes; ellers returnér False.

  1. Brug en for-løkke til at iterere gennem alle elementer i file_system-ordbogen ved hjælp af metoden items(). Dette henter nøglen (name) og værdien (content).
  2. Kontroller, om content er en fil (dvs. strengen "file"), og om name matcher target (navnet på den fil, der søges efter).
  3. Hvis begge betingelser er opfyldt, returnér True, hvilket indikerer, at filen er fundet.
  4. Hvis content ikke er en fil, kontroller om det er en mappe. Brug funktionen isinstance(), hvor du giver content som første argument og dict som andet (som tjekker, om elementet er en ordbog).
  5. Hvis content er en mappe, kald file_exists rekursivt med de nødvendige parametre for at fortsætte søgningen inden i den.
  6. Hvis det rekursive kald returnerer True, er filen fundet, så returnér True.
  7. Hvis ingen match findes efter at have tjekket alle mapper og filer, returnér False.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 2
single

single

some-alt