Utmaning: Rekursiv Filsökning
Arbeta med nästlade ordböcker
I Python kan ordböcker innehålla andra ordböcker. Detta är användbart för att representera hierarkiska strukturer som ett filsystem.
I detta fall:
- Nycklar är namn (antingen på filer eller mappar);
- Om värdet är strängen
"file"
, betyder det att det är en fil; - Om värdet är en annan ordbok, betyder det att det är en mapp.
Använd items()
för att iterera genom alla nyckel-värde-par:
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- Använd
isinstance(content, dict)
för att kontrollera om ett värde är en ordbok (dvs. en mapp, inte 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
Föreställ dig att du behöver kontrollera om en specifik fil existerar inom en nästlad ordboksstruktur som representerar ett filsystem. Implementera en funktion file_exists
som rekursivt navigerar genom mappar (ordboksobjekt) och söker efter en fil (representerad av strängen "file"
). Returnera True
om filen hittas; annars returnera False
.
- Använd en
for
-loop för att iterera genom alla element ifile_system
-ordboken med hjälp av metodenitems()
. Detta hämtar nyckeln (name
) och värdet (content
). - Kontrollera om
content
är en fil (dvs. strängen"file"
) och omname
matchartarget
(namnet på filen som söks). - Om båda villkoren är uppfyllda, returnera
True
, vilket indikerar att filen har hittats. - Om innehållet inte är en fil, kontrollera om det är en mapp.
Använd funktionen
isinstance()
, skicka incontent
som första argument ochdict
som andra (vilket kontrollerar om elementet är en ordbok). - Om
content
är en mapp, anropafile_exists
rekursivt med de nödvändiga parametrarna för att fortsätta sökningen inuti den. - Om det rekursiva anropet returnerar
True
, har filen hittats, så returneraTrue
. - Om inga träffar hittas efter att ha kontrollerat alla mappar och filer, returnera
False
.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 4.35
Utmaning: Rekursiv Filsökning
Svep för att visa menyn
Arbeta med nästlade ordböcker
I Python kan ordböcker innehålla andra ordböcker. Detta är användbart för att representera hierarkiska strukturer som ett filsystem.
I detta fall:
- Nycklar är namn (antingen på filer eller mappar);
- Om värdet är strängen
"file"
, betyder det att det är en fil; - Om värdet är en annan ordbok, betyder det att det är en mapp.
Använd items()
för att iterera genom alla nyckel-värde-par:
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- Använd
isinstance(content, dict)
för att kontrollera om ett värde är en ordbok (dvs. en mapp, inte 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
Föreställ dig att du behöver kontrollera om en specifik fil existerar inom en nästlad ordboksstruktur som representerar ett filsystem. Implementera en funktion file_exists
som rekursivt navigerar genom mappar (ordboksobjekt) och söker efter en fil (representerad av strängen "file"
). Returnera True
om filen hittas; annars returnera False
.
- Använd en
for
-loop för att iterera genom alla element ifile_system
-ordboken med hjälp av metodenitems()
. Detta hämtar nyckeln (name
) och värdet (content
). - Kontrollera om
content
är en fil (dvs. strängen"file"
) och omname
matchartarget
(namnet på filen som söks). - Om båda villkoren är uppfyllda, returnera
True
, vilket indikerar att filen har hittats. - Om innehållet inte är en fil, kontrollera om det är en mapp.
Använd funktionen
isinstance()
, skicka incontent
som första argument ochdict
som andra (vilket kontrollerar om elementet är en ordbok). - Om
content
är en mapp, anropafile_exists
rekursivt med de nödvändiga parametrarna för att fortsätta sökningen inuti den. - Om det rekursiva anropet returnerar
True
, har filen hittats, så returneraTrue
. - Om inga träffar hittas efter att ha kontrollerat alla mappar och filer, returnera
False
.
Lösning
Tack för dina kommentarer!
single