Udfordring: 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:
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- Brug
isinstance(content, dict)
til at kontrollere, om en værdi selv er en ordbog (dvs. en mappe, ikke en fil):
123456789101112file_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")
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
.
- Brug en
for
-løkke til at iterere gennem alle elementer ifile_system
-ordbogen ved hjælp af metodenitems()
. Dette henter nøglen (name
) og værdien (content
). - Kontroller, om
content
er en fil (dvs. strengen"file"
), og omname
matchertarget
(navnet på den fil, der søges efter). - Hvis begge betingelser er opfyldt, returnér
True
, hvilket indikerer, at filen er fundet. - Hvis content ikke er en fil, kontroller om det er en mappe.
Brug funktionen
isinstance()
, hvor du givercontent
som første argument ogdict
som andet (som tjekker, om elementet er en ordbog). - Hvis
content
er en mappe, kaldfile_exists
rekursivt med de nødvendige parametre for at fortsætte søgningen inden i den. - Hvis det rekursive kald returnerer
True
, er filen fundet, så returnérTrue
. - Hvis ingen match findes efter at have tjekket alle mapper og filer, returnér
False
.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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?
Awesome!
Completion rate improved to 4.35
Udfordring: 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:
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- Brug
isinstance(content, dict)
til at kontrollere, om en værdi selv er en ordbog (dvs. en mappe, ikke en fil):
123456789101112file_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")
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
.
- Brug en
for
-løkke til at iterere gennem alle elementer ifile_system
-ordbogen ved hjælp af metodenitems()
. Dette henter nøglen (name
) og værdien (content
). - Kontroller, om
content
er en fil (dvs. strengen"file"
), og omname
matchertarget
(navnet på den fil, der søges efter). - Hvis begge betingelser er opfyldt, returnér
True
, hvilket indikerer, at filen er fundet. - Hvis content ikke er en fil, kontroller om det er en mappe.
Brug funktionen
isinstance()
, hvor du givercontent
som første argument ogdict
som andet (som tjekker, om elementet er en ordbog). - Hvis
content
er en mappe, kaldfile_exists
rekursivt med de nødvendige parametre for at fortsætte søgningen inden i den. - Hvis det rekursive kald returnerer
True
, er filen fundet, så returnérTrue
. - Hvis ingen match findes efter at have tjekket alle mapper og filer, returnér
False
.
Løsning
Tak for dine kommentarer!
single