Python: поиск ближайших совпадений в списке кортежей - PullRequest
0 голосов
/ 06 июля 2018

У меня есть список следующей формы:

[("AAPL", "Apple Inc."), ("TSLA", "Tesla Inc."), ("BB", "BlackBerry Limited")]

Я хочу найти наиболее близкое совпадение, когда пользователь вводит либо название компании, либо символ. Например:

IN: "Apple I" Out: "AAPL"

IN:"BB" OUT:"BB"

Я попытался использовать difflib.get_close_matches , но у меня возникли проблемы с поиском хорошего способа объединить название компании и символ тикера вместе

1 Ответ

0 голосов
/ 06 июля 2018

хороший способ объединить название компании и тикер

Нам просто нужно сделать промежуточное отображение для него:

import difflib

data = [("AAPL", "Apple Inc."), ("TSLA", "Tesla Inc."), ("BB", "BlackBerry Limited")]
index = {name.lower(): symbol for symbol, name in data}
index.update({symbol.lower(): symbol for symbol, name in data})

def search_for_company(text):
    return set(
        index[name_or_symbol]
        for name_or_symbol in difflib.get_close_matches(text.lower(), index.keys())
    )

 print search_for_company('Apple I')  # set(['AAPL'])
 print search_for_company('BB')  # set(['BB'])
 print search_for_company('aapl')  # set(['AAPL'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...