Desafio: Busca Recursiva de Arquivos
Trabalhando com Dicionários Aninhados
Em Python, dicionários podem conter outros dicionários. Isso é útil para representar estruturas hierárquicas como um sistema de arquivos.
Para navegar em um dicionário:
Use items()
para iterar por todos os pares chave-valor:
file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
Use isinstance(content, dict) para verificar se um valor é ele mesmo um dicionário (ou seja, uma pasta, não um arquivo):
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")
Swipe to start coding
Imagine a necessidade de verificar se um arquivo específico existe dentro de uma estrutura de dicionário aninhado que representa um sistema de arquivos. Implemente uma função file_exists
que navega recursivamente por pastas (objetos do tipo dicionário) e busca por um arquivo (representado pela string "file"
). Retorne True
se o arquivo for encontrado; caso contrário, retorne False
.
- Utilize um laço
for
para iterar por todos os elementos do dicionáriofile_system
usando o métodoitems()
. Isso recupera a chave (name
) e o valor (content
). - Verifique se
content
é um arquivo (ou seja, a string"file"
) e sename
corresponde aotarget
(nome do arquivo a ser buscado). - Se ambas as condições forem satisfeitas, retorne
True
, indicando que o arquivo foi encontrado. - Se o conteúdo não for um arquivo, verifique se é uma pasta.
Utilize a função
isinstance()
, passandocontent
como o primeiro argumento edict
como o segundo (o que verifica se o elemento é um dicionário). - Se
content
for uma pasta, chamefile_exists
recursivamente com os parâmetros necessários para continuar a busca dentro dela. - Se a chamada recursiva retornar
True
, o arquivo foi encontrado, então retorneTrue
. - Se nenhuma correspondência for encontrada após verificar todas as pastas e arquivos, retorne
False
.
Solução
Obrigado pelo seu feedback!