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
contenter en fil (altså strengen"file") og omnamesamsvarer 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 inncontentsom første argument ogdictsom andre (dette sjekker om elementet er en ordbok). - Hvis
contenter en mappe, kallfile_existsrekursivt 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
Awesome!
Completion rate improved to 4.17
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
contenter en fil (altså strengen"file") og omnamesamsvarer 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 inncontentsom første argument ogdictsom andre (dette sjekker om elementet er en ordbok). - Hvis
contenter en mappe, kallfile_existsrekursivt 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