[Python] Поиск значений в словаре неизвестной глубины

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

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)
  1. Markdown is allowed. HTML tags allowed: <strong>, <em>, <blockquote>, <code>, <pre>, <a>.