проверьте путь к ключу, если он существует во вложенном словаре

#python

Вопрос:

У меня есть следующий код

 data = {
    "spam": {
        "egg": {
            "bacon": "Well..",
            "sausages": "Spam egg sausages and spam",
            "spam": "does not have much spam in it",
        }
    }
}

def does_nested_key_exists(dictionary, nested_key):
    exists = nested_key in dictionary
    if not exists:
        for key, value in dictionary.items():
            if isinstance(value, dict):
                exists = exists or does_nested_key_exists(value, nested_key)
    return exists
 

Что я хочу, так это проверить, существует ли ключ «бекон». Если он существует, он должен указывать путь как spam.egg . Я ищу ключевой путь для итерации. Мне нужно знать, какие изменения необходимы для кода выше или как это можно сделать

Комментарии:

1. Итак, где ты застрял?

2. Это дает истину или ложь, если ключ существует или нет. Мне нужен ключевой путь, на котором он нас присутствует

3. можете ли вы добавить пример, когда он не дает вам ожидаемого результата?

Ответ №1:

Я думаю, это то, чего ты хочешь.

 def does_nested_key_exists(dictionary, nested_key, keys=None):
    if keys is None:
        keys = []

    for key, value in dictionary.items():
        if key == nested_key:
            return True, '.'.join(keys)
        if isinstance(value, dict):
            keys.append(key)
            return does_nested_key_exists(value, nested_key, keys)
    return False, ""