Я невероятно новичок в 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
Вы можете использовать любую логику, подходящую внутри этой функции, я просто выбираю цикл над "предложениями" и отображаю их.