Как я пересекаю вложенные словари (python)?

Я невероятно новичок в python, поэтому, пожалуйста, простите меня, если я ничего не понимаю!!

У меня есть 125 строк кода, но у меня есть одна проблема. как он в настоящее время настроен, есть неправильно написанное слово. он ссылается на похожие слова в словаре, а слова имеют оценку, основанную на том, насколько они похожи.

possible_replacements("sineaster", {"sineaster":{"easter":0.75, "sinister":0.60}})

possible_replacements - это имя функции, "синемастер" - это слово с ошибкой, а "пасхальные" и "зловещие" рекомендуются заменителями. Я хочу получить доступ к связанным числам со словарными словами (.75 ​​и .6), но я не могу найти их, потому что они вложены в другой словарь.

любые предложения?

Ответ 1

Как только вы узнаете, какое слово запрашивать (здесь "синестер" ), у вас есть простой словарь, который вы можете, например, пройти в цикле for:

outer_dict = {"sineaster":{"easter":0.75, "sinister":0.60}}
inner_dict = outer_dict["sineaster"]
for key, value in inner_dict.items():
    print('{}: {}'.format(key, value))

Ответ 2

Я предполагаю, что ваш словарь для замещения больше одной записи. Если да, рассмотрите один из способов реализации possible_replacements:

def possible_replacements(misspelled, replacement_dict):
    suggestions = replacement_dict[misspelled]
    for (repl, acc) in suggestions.items():
        print("[%.2f] %s -> %s" % (acc, misspelled, repl))

# This is the replacement dictionary, with an extra entry just to illustrate
replacement_dict = {
    "sineaster":{"easter":0.75, "sinister":0.60},
    "adn": {"and": 0.99, "end": 0.01}
}

# Call function, asking for replacements of "sineaster"
possible_replacements("sineaster", replacement_dict)

Вывод:

[0.75] sineaster -> easter
[0.60] sineaster -> sinister

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

Когда вы вызываете его с помощью "синестера", внутри функции

suggestions = {"easter":0.75, "sinister":0.60}

suggestions.items() = [('easter', 0.75), ('sinister', 0.6)]

И на первой итерации цикла for:

repl = "easter"
acc  = 0.75

И на второй итерации:

repl = "sinister"
acc  = 0.60

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