@Emince

Почему не работает поиск по словарю?

Почему не работает поиск значения ключа?

site = {
    'html': {
        'head': {
            'title': 'Мой сайт'
        },
        'body': {
            'h2': 'Здесь будет мой заголовок',
            'div': 'Тут, наверное, какой-то блок',
            'p': 'А вот здесь новый абзац'
        }
    }
}


def find_key(struct, key, depth=0, max_depth=None):
    if max_depth is not None and depth >= max_depth:
        return None

    if key in struct:
        return struct[key]
    elif isinstance(struct, dict):
        for sub_struct in struct.values():
            result = find_key(sub_struct, key, depth + 1, max_depth)
            if result is not None:
                return result
    return None


def dict_depth(struct, lv=1):
    if not isinstance(struct, dict):
        return lv
    return max(dict_depth(struct[key], lv + 1) for key in struct)


user_key = input('Какой ключ ищем? ')
search_quest = input('Хотите ввести максимальную глубину? Y/N: ')
value = ''

if search_quest.upper() == 'Y':
    deep_search = int(input('Введите максимальную глубину? '))
else:
    deep_search = dict_depth(site, lv=1)

value = find_key(site, user_key, max_depth=deep_search)

if value:
    print(value)
else:
    print('Такого ключа нет.')
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 21:25
2000 руб./за проект
28 мар. 2024, в 21:17
5000 руб./за проект
28 мар. 2024, в 20:46
150000 руб./за проект