Завдання: Рекурсивний Пошук Файлів
Робота з вкладеними словниками
У Python словники можуть містити інші словники. Це корисно для представлення ієрархічних структур, таких як файлова система.
Для навігації по словнику:
Використовуйте items()
, щоб ітерувати всі пари ключ-значення:
file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
Використовуйте isinstance(content, dict), щоб перевірити, чи є значення словником (тобто папкою, а не файлом):
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
Уявіть, що потрібно перевірити, чи існує певний файл у вкладеній структурі словників, яка представляє файлову систему. Реалізуйте функцію file_exists
, яка рекурсивно проходить через папки (об'єкти-словники) та шукає файл (представлений рядком "file"
). Поверніть True
, якщо файл знайдено; інакше поверніть False
.
- Використовуйте цикл
for
для ітерації по всіх елементах словникаfile_system
за допомогою методуitems()
. Це дозволяє отримати ключ (name
) та значення (content
). - Перевірте, чи
content
є файлом (тобто рядком"file"
) і чиname
співпадає зtarget
. - Якщо обидві умови виконуються, поверніть
True
. - Якщо
isinstance()
не є файлом, перевірте, чи це папка. Використовуйте функціюcontent
— передайтеdict
як перший аргумент іcontent
як другий. - Якщо це папка, викликайте
file_exists
рекурсивно для продовження пошуку всередині неї. - Якщо рекурсивний виклик повертає
True
, файл знайдено, тому повернітьTrue
. - Якщо жодного збігу не знайдено після перевірки всіх папок і файлів, поверніть
False
.
Рішення
Все було зрозуміло?
Дякуємо за ваш відгук!