Renomear um Ficheiro em PyTown

No mundo virtual de PyTown, todos os documentos ou ficheiros digitais são armazenados em diretórios e subdiretórios que são representados como dicionários aninhados. O presidente da câmara, o Sr. CeePy, tem a grande responsabilidade de manter todos estes documentos organizados, corretamente nomeados e facilmente acessíveis. Um dia, o Sr. CeePy apercebeu-se de que um ficheiro muito importante estava mal nomeado e precisa de o corrigir urgentemente.
A tua tarefa é ajudar o Sr. CeePy, escrevendo um programa recursivo em Python para procurar este ficheiro específico na estrutura de diretórios representada pelo dicionário aninhado e renomeá-lo se for encontrado. Aqui, as chaves representam nomes de pastas ou de ficheiros, e os valores são ou dicionários que representam subpastas ou strings que representam extensões de ficheiros.
A primeira linha da entrada é a estrutura do dicionário aninhado. Este dicionário representa os diretórios como chaves e tem como valores ou um dicionário ou uma string. As strings são extensões de ficheiros que, quando combinadas com as suas chaves (nomes de ficheiros), formam o nome completo do ficheiro.
A segunda linha da entrada é o nome do ficheiro existente (com a sua extensão) que precisa de ser encontrado e renomeado.
A terceira linha da entrada é o novo nome para o qual o ficheiro existente deve ser renomeado.
O programa deve retornar a estrutura do dicionário aninhado modificada com o ficheiro renomeado. Se o ficheiro não for encontrado na estrutura de diretórios, o programa deve imprimir File not found.
Entrada
Saída
{"home": {"documents": {"report": ".docx", "data": ".csv", "analysis": ".txt"}, "pictures": {"beach": ".jpg", "portrait": ".png"}}, "desktop": {"important": ".pdf", "todo": ".txt"}} important.pdf urgent.pdf
{"home": {"documents": {"report": ".docx", "data": ".csv", "analysis": ".txt"}, "pictures": {"beach": ".jpg", "portrait": ".png"}}, "desktop": {"urgent": ".pdf", "todo": ".txt"}}
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue