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
content
tiedosto (eli merkkijono"file"
) ja vastaakoname
haettavaa 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 oncontent
ja toisenadict
(tarkistaa, onko alkio sanakirja). - Jos
content
on 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
Awesome!
Completion rate improved to 4.35
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
content
tiedosto (eli merkkijono"file"
) ja vastaakoname
haettavaa 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 oncontent
ja toisenadict
(tarkistaa, onko alkio sanakirja). - Jos
content
on 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