Osio 5. Luku 3
single
Haaste: Rekursiivinen Tiedostohaku
Pyyhkäise näyttääksesi valikon
Sisäkkäisten sanakirjojen käsittely
Sanakirjat voivat sisältää muita sanakirjoja, mikä on hyödyllistä hierarkkisen datan, kuten tiedostojärjestelmän, esittämisessä.
- Avaimet ovat tiedosto- tai kansioiden nimiä;
"file"tarkoittaa, että kyseessä on tiedosto;- Sisäkkäinen sanakirja tarkoittaa, että kyseessä on kansio.
Käytä items()-metodia avain–arvo-parien läpikäymiseen.
1234567file_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 kansio:
12345678910file_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')
Tehtävä
Pyyhkäise aloittaaksesi koodauksen
Tarkistaaksesi, onko tietty tiedosto olemassa sisäkkäisessä sanakirjassa, toteuta rekursiivinen file_exists-funktio:
- Käy sanakirja läpi
items()-metodilla. - Jos
contenton'file'janamevastaatarget-arvoa, palautaTrue. - Jos
contenton kansio (isinstance(content, dict)), kutsufile_exists-funktiota rekursiivisesti. - Jos rekursiivinen kutsu palauttaa
True, välitäTrueeteenpäin. - Jos mikään ei täsmää kaikkien tasojen tarkistamisen jälkeen, palauta
False.
Ratkaisu
Oliko kaikki selvää?
Kiitos palautteestasi!
Osio 5. Luku 3
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme