Utfordring: 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:
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- Bruk
isinstance(content, dict)
for å sjekke om en verdi selv er en ordbok (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
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
.
- Bruk en
for
-løkke for å iterere gjennom alle elementene ifile_system
-ordboken ved å brukeitems()
-metoden. Dette henter ut nøkkelen (name
) og verdien (content
). - Sjekk om
content
er en fil (altså strengen"file"
) og omname
samsvarer medtarget
(navnet på filen det søkes etter). - Hvis begge betingelsene er oppfylt, returner
True
, noe som indikerer at filen er funnet. - Hvis innholdet ikke er en fil, sjekk om det er en mappe.
Bruk funksjonen
isinstance()
og send inncontent
som første argument ogdict
som andre (dette sjekker om elementet er en ordbok). - Hvis
content
er en mappe, kallfile_exists
rekursivt med de nødvendige parameterne for å fortsette søket inni mappen. - Hvis det rekursive kallet returnerer
True
, er filen funnet, så returnerTrue
. - Hvis ingen treff finnes etter å ha sjekket alle mapper og filer, returner
False
.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Utfordring: 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:
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- Bruk
isinstance(content, dict)
for å sjekke om en verdi selv er en ordbok (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
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
.
- Bruk en
for
-løkke for å iterere gjennom alle elementene ifile_system
-ordboken ved å brukeitems()
-metoden. Dette henter ut nøkkelen (name
) og verdien (content
). - Sjekk om
content
er en fil (altså strengen"file"
) og omname
samsvarer medtarget
(navnet på filen det søkes etter). - Hvis begge betingelsene er oppfylt, returner
True
, noe som indikerer at filen er funnet. - Hvis innholdet ikke er en fil, sjekk om det er en mappe.
Bruk funksjonen
isinstance()
og send inncontent
som første argument ogdict
som andre (dette sjekker om elementet er en ordbok). - Hvis
content
er en mappe, kallfile_exists
rekursivt med de nødvendige parameterne for å fortsette søket inni mappen. - Hvis det rekursive kallet returnerer
True
, er filen funnet, så returnerTrue
. - Hvis ingen treff finnes etter å ha sjekket alle mapper og filer, returner
False
.
Løsning
Takk for tilbakemeldingene dine!
single