Haaste: Rekursiivinen Tiedostohaku
Sisäkkäisten sanakirjojen käsittely
Pythonissa sanakirjat voivat sisältää muita sanakirjoja. Tämä on hyödyllistä hierarkkisten rakenteiden, kuten tiedostojärjestelmän, esittämiseen.
Tässä tapauksessa:
- Avaimet ovat nimiä (joko tiedostojen tai kansioiden);
- Jos arvo on merkkijono
"file", kyseessä on tiedosto; - Jos arvo on toinen sanakirja, kyseessä on kansio.
Käytä items()-metodia käydäksesi läpi kaikki avain-arvo-parit:
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- Käytä
isinstance(content, dict)tarkistaaksesi, onko arvo itsessään sanakirja (eli kansio, ei tiedosto):
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
Kuvittele tilanne, jossa täytyy tarkistaa, löytyykö tietty tiedosto sisäkkäisestä sanakirjarakenteesta, joka esittää tiedostojärjestelmää. Toteuta funktio file_exists, joka etsii rekursiivisesti kansioiden (sanakirjaolioiden) läpi ja etsii tiedostoa (merkkijonona "file"). Palauta True, jos tiedosto löytyy; muussa tapauksessa palauta False.
- Käytä
for-silmukkaa iteroidaksesifile_system-sanakirjan kaikkien alkioiden läpi käyttäenitems()-metodia. Tämä palauttaa avaimen (name) ja arvon (content). - Tarkista, onko
contenttiedosto (eli merkkijono"file") ja vastaakonamehaettavaa tiedostonimeätarget. - Jos molemmat ehdot täyttyvät, palauta
True, mikä osoittaa, että tiedosto on löytynyt. - Jos sisältö ei ole tiedosto, tarkista, onko se kansio.
Käytä
isinstance()-funktiota, jossa ensimmäisenä argumenttina oncontentja toisenadict(tarkistaa, onko alkio sanakirja). - Jos
contenton kansio, kutsufile_exists-funktiota rekursiivisesti tarvittavilla parametreilla jatkaaksesi etsintää sen sisällä. - Jos rekursiivinen kutsu palauttaa
True, tiedosto on löytynyt, joten palautaTrue. - Jos yhtään osumaa ei löydy kaikkien kansioiden ja tiedostojen tarkistamisen jälkeen, palauta
False.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Haaste: Rekursiivinen Tiedostohaku
Pyyhkäise näyttääksesi valikon
Sisäkkäisten sanakirjojen käsittely
Pythonissa sanakirjat voivat sisältää muita sanakirjoja. Tämä on hyödyllistä hierarkkisten rakenteiden, kuten tiedostojärjestelmän, esittämiseen.
Tässä tapauksessa:
- Avaimet ovat nimiä (joko tiedostojen tai kansioiden);
- Jos arvo on merkkijono
"file", kyseessä on tiedosto; - Jos arvo on toinen sanakirja, kyseessä on kansio.
Käytä items()-metodia käydäksesi läpi kaikki avain-arvo-parit:
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- Käytä
isinstance(content, dict)tarkistaaksesi, onko arvo itsessään sanakirja (eli kansio, ei tiedosto):
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
Kuvittele tilanne, jossa täytyy tarkistaa, löytyykö tietty tiedosto sisäkkäisestä sanakirjarakenteesta, joka esittää tiedostojärjestelmää. Toteuta funktio file_exists, joka etsii rekursiivisesti kansioiden (sanakirjaolioiden) läpi ja etsii tiedostoa (merkkijonona "file"). Palauta True, jos tiedosto löytyy; muussa tapauksessa palauta False.
- Käytä
for-silmukkaa iteroidaksesifile_system-sanakirjan kaikkien alkioiden läpi käyttäenitems()-metodia. Tämä palauttaa avaimen (name) ja arvon (content). - Tarkista, onko
contenttiedosto (eli merkkijono"file") ja vastaakonamehaettavaa tiedostonimeätarget. - Jos molemmat ehdot täyttyvät, palauta
True, mikä osoittaa, että tiedosto on löytynyt. - Jos sisältö ei ole tiedosto, tarkista, onko se kansio.
Käytä
isinstance()-funktiota, jossa ensimmäisenä argumenttina oncontentja toisenadict(tarkistaa, onko alkio sanakirja). - Jos
contenton kansio, kutsufile_exists-funktiota rekursiivisesti tarvittavilla parametreilla jatkaaksesi etsintää sen sisällä. - Jos rekursiivinen kutsu palauttaa
True, tiedosto on löytynyt, joten palautaTrue. - Jos yhtään osumaa ei löydy kaikkien kansioiden ja tiedostojen tarkistamisen jälkeen, palauta
False.
Ratkaisu
Kiitos palautteestasi!
single