Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Búsqueda Recursiva de Archivos | Recursión y Funciones Lambda
Tutorial de Funciones en Python

bookDesafío: Búsqueda Recursiva de Archivos

Trabajo con diccionarios anidados

En Python, los diccionarios pueden contener otros diccionarios. Esto es útil para representar estructuras jerárquicas como un sistema de archivos.

En este caso:

  • Las claves son nombres (de archivos o carpetas);
  • Si el valor es la cadena "file", significa que es un archivo;
  • Si el valor es otro diccionario, significa que es una carpeta.

Utiliza items() para iterar sobre todos los pares clave-valor:

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
  • Utiliza isinstance(content, dict) para comprobar si un valor es en sí mismo un diccionario (es decir, una carpeta, no un archivo):
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
Tarea

Swipe to start coding

Imagina la necesidad de verificar si un archivo existe dentro de una estructura de diccionario anidado que representa un sistema de archivos. Implementa una función file_exists que navegue recursivamente a través de carpetas (objetos diccionario) y busque un archivo (representado por la cadena "file"). Devuelve True si se encuentra el archivo; de lo contrario, devuelve False.

  1. Utiliza un bucle for para iterar sobre todos los elementos del diccionario file_system usando el método items(). Esto recupera la clave (name) y el valor (content).
  2. Verifica si content es un archivo (es decir, la cadena "file") y si name coincide con target (el nombre del archivo que se está buscando).
  3. Si se cumplen ambas condiciones, devuelve True, indicando que se ha encontrado el archivo.
  4. Si el contenido no es un archivo, verifica si es una carpeta. Utiliza la función isinstance(), pasando content como el primer argumento y dict como el segundo (lo que comprueba si el elemento es un diccionario).
  5. Si content es una carpeta, llama recursivamente a file_exists con los parámetros necesarios para continuar la búsqueda dentro de ella.
  6. Si la llamada recursiva devuelve True, el archivo ha sido encontrado, por lo que devuelve True.
  7. Si no se encuentran coincidencias después de revisar todas las carpetas y archivos, devuelve False.

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 2
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

close

Awesome!

Completion rate improved to 4.35

bookDesafío: Búsqueda Recursiva de Archivos

Desliza para mostrar el menú

Trabajo con diccionarios anidados

En Python, los diccionarios pueden contener otros diccionarios. Esto es útil para representar estructuras jerárquicas como un sistema de archivos.

En este caso:

  • Las claves son nombres (de archivos o carpetas);
  • Si el valor es la cadena "file", significa que es un archivo;
  • Si el valor es otro diccionario, significa que es una carpeta.

Utiliza items() para iterar sobre todos los pares clave-valor:

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
  • Utiliza isinstance(content, dict) para comprobar si un valor es en sí mismo un diccionario (es decir, una carpeta, no un archivo):
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
Tarea

Swipe to start coding

Imagina la necesidad de verificar si un archivo existe dentro de una estructura de diccionario anidado que representa un sistema de archivos. Implementa una función file_exists que navegue recursivamente a través de carpetas (objetos diccionario) y busque un archivo (representado por la cadena "file"). Devuelve True si se encuentra el archivo; de lo contrario, devuelve False.

  1. Utiliza un bucle for para iterar sobre todos los elementos del diccionario file_system usando el método items(). Esto recupera la clave (name) y el valor (content).
  2. Verifica si content es un archivo (es decir, la cadena "file") y si name coincide con target (el nombre del archivo que se está buscando).
  3. Si se cumplen ambas condiciones, devuelve True, indicando que se ha encontrado el archivo.
  4. Si el contenido no es un archivo, verifica si es una carpeta. Utiliza la función isinstance(), pasando content como el primer argumento y dict como el segundo (lo que comprueba si el elemento es un diccionario).
  5. Si content es una carpeta, llama recursivamente a file_exists con los parámetros necesarios para continuar la búsqueda dentro de ella.
  6. Si la llamada recursiva devuelve True, el archivo ha sido encontrado, por lo que devuelve True.
  7. Si no se encuentran coincidencias después de revisar todas las carpetas y archivos, devuelve False.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

close

Awesome!

Completion rate improved to 4.35
Sección 5. Capítulo 2
single

single

some-alt