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 så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 i sig ä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 i 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 omnamemotsvarartarget(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(), angecontentsom första argument ochdictsom andra (vilket kontrollerar om elementet är en ordbok). - Om
contentär en mapp, anropafile_existsrekursivt 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
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.17
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 så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 i sig ä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 i 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 omnamemotsvarartarget(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(), angecontentsom första argument ochdictsom andra (vilket kontrollerar om elementet är en ordbok). - Om
contentär en mapp, anropafile_existsrekursivt 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