@Johnem

Как вывести объект принадлежащий наиболее похожиму на введенную переменную ключу с помощью fuzzywuzzy?

Нужно вывести объект по его ключу, который выдает наибольшее значение при сравнение его с введенными данными (сравнение производится функцией fuzz.token_sort_ratio), из словаря. Вот для этого кода (Извиняюсь за большой словарь):
user_input_information = str(input("Какую информацию вы хотите получить: "))
information_code = {'Идентификатор рынка': 'securities&securities.columns=MARKETID',
                    'Идентификатор режима торгов': 'securities&securities.columns=BOARDID',
                    'Идентификатор режима торгов': 'securities&securities.columns=SECBOARD',
                    'Идентификатор финансового инструмента': 'securities&securities.columns=SECCODE',
                    'Наименование финансового инструмента': 'securities&securities.columns=SECNAME',
                    'Примечание': 'securities&securities.columns=REMARKS',
                    'Краткое наименование бумаги': 'securities&securities.columns=SHORTNAME',
                    'Индикатор  торговые операции разрешены / запрещены ': 'securities&securities.columns=STATUS',
                    'Индикатор состояния торговой сессии по инструменту': 'securities&securities.columns=TRADINGSTATUS',
                    'Идентификатор рынка на котором торгуется финансовый инструмент': 'securities&securities.columns=MARKETCODE',
                    'Идентификатор группы инструментов': 'securities&securities.columns=INSTRID',
                    'The sector code for the security.': 'securities&securities.columns=SECTORID',
                    'Количество ценных бумаг в одном стандартном лоте': 'securities&securities.columns=LOTSIZE',
                    'Минимально возможная разница между ценами, указанными в заявках на покупку': 'securities&securities.columns=MINSTEP',
                    'Номинальная стоимость одной ценной бумаги, в валюте инструмента': 'securities&securities.columns=FACEVALUE',
                    'Код валюты, в которой выражен номинал ценной бумаги': 'securities&securities.columns=FACEUNIT',
                    'Дата предыдущего торгового дня': 'securities&securities.columns=PREVDATE',
                    'Цена последней сделки предыдущего торгового дня': 'securities&securities.columns=PREVPRICE',
                    'Количество десятичных знаков дробной части числа. Используется для форматирования значений полей с типом PRICE': 'securities&securities.columns=DECIMALS',
                    'Доходность, рассчитанная по цене сделки': 'securities&securities.columns=YIELD',
                    'Накопленный купонный доход на дату торгов в расчёте на одну бумагу, выраженный в руб': 'securities&securities.columns=ACCRUEDINT',
                    'Индикатор информирующий, что по данному инструменту проводится аукцион': 'securities&securities.columns=PRIMARYDIST',
                    'Дата погашения': 'securities&securities.columns=MATDATE',
                    'Величина купона, выраженная в руб': 'securities&securities.columns=COUPONVALUE',
                    'Длительность купона, выраженная в днях': 'securities&securities.columns=COUPONPERIOD',
                    'Дата окончания купона': 'securities&securities.columns=NEXTCOUPON',
                    'Объём выпуска': 'securities&securities.columns=ISSUESIZE',
                    'Значение оценки предыдущего торгового дня': 'securities&securities.columns=PREVWAPRICE',
                    'Доходность по оценке предыдущего торгового дня': 'securities&securities.columns=YIELDATPREVWAPRICE',
                    'Цена второй части РЕПО': 'securities&securities.columns=REPO2PRICE',
                    'Код сопряженной валюты ценной бумаги': 'securities&securities.columns=CURRENCYID',
                    'Цена выкупа': 'securities&securities.columns=BUYBACKPRICE',
                    'Дата, к которой рассчитывается доходность': 'securities&securities.columns=BUYBACKDATE',
                    'Идентификатор фирмы-агента по размещению': 'securities&securities.columns=AGENTID',
                    'Тип цены': 'securities&securities.columns=QUOTEBASIS',
                    'Международный идентификационный код ценной бумаги': 'securities&securities.columns=ISIN',
                    'Наименование финансового инструмента на английском языке': 'securities&securities.columns=LATNAME',
                    'Номер государственной регистрации': 'securities&securities.columns=REGNUMBER',
                    'Цена закрытия предыдущего дня': 'securities&securities.columns=PREVLEGALCLOSEPRICE',
                    'Признаваемая котировка предыдущего дня': 'securities&securities.columns=PREVADMITTEDQUOTE',
                    'Тип ценной бумаги': 'securities&securities.columns=SECTYPE',
                    'Лучшая котировка на покупку': 'marketdata&marketdata.columns=BID',
                    'Объем заявок на покупку по лучшей котировке, выраженный в лотах': 'marketdata&marketdata.columns=BIDDEPTH',
                    'Объем всех заявок на покупку в очереди Торговой Системы, выраженный в лотах': 'marketdata&marketdata.columns=BIDDEPTHT',
                    'Количество заявок на покупку в очереди Торговой системы': 'marketdata&marketdata.columns=NUMBIDS',
                    'Лучшая котировка на продажу': 'marketdata&marketdata.columns=OFFER',
                    'Объём заявок на продажу по лучшей котировке, выраженный в лотах': 'marketdata&marketdata.columns=OFFERDEPTH',
                    'Объём всех заявок на продажу в очереди Торговой Системы, выраженный в лотах': 'marketdata&marketdata.columns=OFFERDEPTHT',
                    'Количество заявок на продажу в очереди Торговой системы': 'marketdata&marketdata.columns=NUMOFFERS',
                    'Цена первой сделки': 'marketdata&marketdata.columns=OPEN',
                    'Максимальная цена сделки': 'marketdata&marketdata.columns=HIGH',
                    'Минимальная цена сделки': 'marketdata&marketdata.columns=LOW',
                    'Цена последней сделки': 'marketdata&marketdata.columns=LAST',
                    'The price of the last negotiated deal.': 'marketdata&marketdata.columns=LASTNEG',
                    'Изменение цены последней сделки по отношению к цене последней сделки предыдущего торгового': 'marketdata&marketdata.columns=CHANGE',
                    'Объём последней сделки, в лотах': 'marketdata&marketdata.columns=QTY',
                    'Время заключения последней сделки': 'marketdata&marketdata.columns=TIME',
                    'Объём совершенных сделок, выраженный в единицах ценных бумаг': 'marketdata&marketdata.columns=VOLTODAY',
                    'Объём совершенных сделок, выраженный в руб.': 'marketdata&marketdata.columns=VALTODAY',
                    'Объём последней сделки, в руб.': 'marketdata&marketdata.columns=VALUE',
                    'Средневзвешенная цена': 'marketdata&marketdata.columns=WAPRICE',
                    'Наибольшая цена спроса в течение торговой сессии': 'marketdata&marketdata.columns=HIGHBID',
                    'Наименьшая цена предложения в течение торговой сессии': 'marketdata&marketdata.columns=LOWOFFER',
                    'Количество сделок за торговый день': 'marketdata&marketdata.columns=NUMTRADES',
                    'Доходность по средневзвешенной цене': 'marketdata&marketdata.columns=YIELDATWAPRICE',
                    'Цена последней сделки к оценке предыдущего дня': 'marketdata&marketdata.columns=PRICEMINUSPREVWAPRICE',
                    'Цена послеторгового периода': 'marketdata&marketdata.columns=CLOSEPRICE',
                    'Доходность по цене послеторгового периода': 'marketdata&marketdata.columns=CLOSEYIELD',
                    'Лучшая котировка на покупку на момент завершения нормального периода торгов': 'marketdata&marketdata.columns=LASTBID',
                    'Лучшая котировка на покупку на момент завершения нормального периода торгов': 'marketdata&marketdata.columns=LASTOFFER',
                    'Код расчётов по последней сделке': 'marketdata&marketdata.columns=LASTSETTLECODE',
                    'Базовый курс при торговле СВОП инструментами': 'marketdata&marketdata.columns=BASEPRICE',
                    'Рыночная цена ценной бумаги по результатам торгов предыдущего дня, за одну ценную бумагу': 'marketdata&marketdata.columns=MARKETPRICE',
                    'Рыночная цена по результатам торгов сегодняшнего дня, за одну ценную бумагу': 'marketdata&marketdata.columns=MARKETPRICETODAY',
                    'Дюрация': 'marketdata&marketdata.columns=DURATION',
                    'Код расчётов по умолчанию для данного инструмента': 'marketdata&marketdata.columns=SETTLECODE',
                    'Официальная цена открытия, рассчитываемая как средневзвешенная цена сделок первого часа торговой сессии, включая сделки предторгового периода': 'marketdata&marketdata.columns=LOPENPRICE',
                    'Официальная текущая цена, рассчитываемая как средневзвешенная цена сделок последнего, предшествующего моменту расчета, часа торговой сессии': 'marketdata&marketdata.columns=LCURRENTPRICE',
                    'Официальная цена закрытия, рассчитываемая как средневзвешенная цена сделок последнего часа торговой сессии, включая сделки послеторгового периода': 'marketdata&marketdata.columns=LCLOSEPRICE',
                    'Рыночная цена 2, рассчитываемая в соответствии с методикой ФСФР': 'marketdata&marketdata.columns=MARKETPRICE2',
                    'Признаваемая котировка, рассчитываемая в соответствии с методикой ФСФР': 'marketdata&marketdata.columns=ADMITTEDQUOTE',
                    'Цена предторгового периода': 'marketdata&marketdata.columns=OPENPERIODPRICE'}
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
@o5a
Использовать функцию по назначению
from fuzzywuzzy import fuzz

information_code = {'Идентификатор рынка': 'securities&securities.columns=MARKETID', ...

user_input_information = 'цена торг периода'
close_match = max(information_code, key=lambda x: fuzz.token_sort_ratio(x, user_input_information))
print(close_match)
print(information_code[close_match])
# Цена предторгового периода
# marketdata&marketdata.columns=OPENPERIODPRICE
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы