Вопросы с собеседований по Python
@workakkk - админ
@machinelearning_interview - вопросы с собесдований по Ml
@pro_python_code - Python
@data_analysis_ml - анализ данных на Python
@itchannels_telegram - 🔥 главное в ит
РКН: clck.ru/3FmrFd
Post #575
3.81K

🖥 Поиск значений в словаре неизвестной глубины
Периодически на собеседованиях попадаются задачи с похожей формулировкой.
🟡Перебрать весь словарь неизвестной глубины и содержимого, включающие в себя вложенные словари, можно с помощью рекурсии. Для этого подойдет функция такого вида (кстати, здесь используются аннотации типов):
Функция перебирает все элементы словаря и либо кладет его в новый словарь с результатами, если есть совпадение с искомым, либо запускает сама себя для элементов, представляющие собой так же словарь. На выходе получается массив найденных значений.
🟡Для запуска поиска нужно создать переменную под массив с результатам и вызвать созданную функцию, передав ей исходный словарь:
Ну вот, теперь на одну проблемную задачу меньше)
@python_job_interview
Периодически на собеседованиях попадаются задачи с похожей формулировкой.
🟡Перебрать весь словарь неизвестной глубины и содержимого, включающие в себя вложенные словари, можно с помощью рекурсии. Для этого подойдет функция такого вида (кстати, здесь используются аннотации типов):
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










