Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Rekursiv Filsökning | Rekursion och Lambda-Funktioner
Handledning om Pythonfunktioner

bookUtmaning: 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:

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
  • Använd isinstance(content, dict) för att kontrollera om ett värde är en ordbok (dvs. en mapp, inte 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
Uppgift

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.

  1. Använd en for-loop för att iterera genom alla element i file_system-ordboken med hjälp av metoden items(). Detta hämtar nyckeln (name) och värdet (content).
  2. Kontrollera om content är en fil (dvs. strängen "file") och om name matchar target (namnet på filen som söks).
  3. Om båda villkoren är uppfyllda, returnera True, vilket indikerar att filen har hittats.
  4. Om innehållet inte är en fil, kontrollera om det är en mapp. Använd funktionen isinstance(), skicka in content som första argument och dict som andra (vilket kontrollerar om elementet är en ordbok).
  5. Om content är en mapp, anropa file_exists rekursivt med de nödvändiga parametrarna för att fortsätta sökningen inuti den.
  6. Om det rekursiva anropet returnerar True, har filen hittats, så returnera True.
  7. Om inga träffar hittas efter att ha kontrollerat alla mappar och filer, returnera False.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 2
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

Awesome!

Completion rate improved to 4.35

bookUtmaning: 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:

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
  • Använd isinstance(content, dict) för att kontrollera om ett värde är en ordbok (dvs. en mapp, inte 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
Uppgift

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.

  1. Använd en for-loop för att iterera genom alla element i file_system-ordboken med hjälp av metoden items(). Detta hämtar nyckeln (name) och värdet (content).
  2. Kontrollera om content är en fil (dvs. strängen "file") och om name matchar target (namnet på filen som söks).
  3. Om båda villkoren är uppfyllda, returnera True, vilket indikerar att filen har hittats.
  4. Om innehållet inte är en fil, kontrollera om det är en mapp. Använd funktionen isinstance(), skicka in content som första argument och dict som andra (vilket kontrollerar om elementet är en ordbok).
  5. Om content är en mapp, anropa file_exists rekursivt med de nödvändiga parametrarna för att fortsätta sökningen inuti den.
  6. Om det rekursiva anropet returnerar True, har filen hittats, så returnera True.
  7. Om inga träffar hittas efter att ha kontrollerat alla mappar och filer, returnera False.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 2
single

single

some-alt