TGViewer
Python вопросы с собеседований Python вопросы с собеседований @python_job_interview · 24.9K subscribers
Post #575 3.81K
🖥 Поиск значений в словаре неизвестной глубины

Периодически на собеседованиях попадаются задачи с похожей формулировкой.

🟡Перебрать весь словарь неизвестной глубины и содержимого, включающие в себя вложенные словари, можно с помощью рекурсии. Для этого подойдет функция такого вида (кстати, здесь используются аннотации типов):
def find_all_keys(input_dict: dict) -> list:
result = []
for key, val in input_dict.items():
if key.startswith('description'):
result.append(val)
if isinstance(val, dict):
result.extend(find_all_keys(val))
return result

Функция перебирает все элементы словаря и либо кладет его в новый словарь с результатами, если есть совпадение с искомым, либо запускает сама себя для элементов, представляющие собой так же словарь. На выходе получается массив найденных значений.

🟡Для запуска поиска нужно создать переменную под массив с результатам и вызвать созданную функцию, передав ей исходный словарь:
data = yaml.safe_load(Path(sys.argv[1]).read_text())
descriptions = find_all_keys(data)


Ну вот, теперь на одну проблемную задачу меньше)

@python_job_interview
  • 👍 14
  • ❤ 4
  • 🔥 3
More from @python_job_interview
  1. Sep 29, 2026🌟 OpenScience: персональный учёный с режимом автономных экспериментов Стартап Synthetic S…
  2. Sep 28, 2026Миниатюра из фотографии за 4 строки Python 🐍 from PIL import Image with Image.open("my_im…
  3. Sep 26, 2026Octop - open-source платформа, где можно запускать сразу несколько AI-агентов для себя, се…
  4. Sep 23, 2026Визуализация данных на Python: 10 лучших примеров с кодом Визуализация данных на Python -…
  5. Sep 22, 2026Как правильно получить случайное число в Python Если нужен диапазон от 1 до 100 включитель…
  6. Sep 19, 2026✔️ Кто подключился к вашей сети? NetAlertX обнаруживает устройства и уведомляет об изменен…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →