Как искать частичный текст в dict? - PullRequest
1 голос
/ 19 февраля 2020

У меня есть словарь, и я хотел бы иметь возможность поиска с частичной переменной и вернуть текст.

df = pd.read_csv('MY_PATH')
d = defaultdict(lambda: 'Error, input not listed')
d.update(df.set_index('msg')['reply'].to_dict())
d[last_msg()]

last_msg() должна быть моей частичной переменной, а d - мой словарь.

Индекс в моем словаре - это столбец msg из df.

В столбце msg у меня есть пример, подобный Jeff Bezos.

В столбце reply у меня есть соответствующий ответ Jeff Bezos is the CEO of Amazon

Как найти частичное значение в столбце msg и вернуть соответствующее значение из столбца reply?

Я хочу найти только Jeff или просто Bezos и получить соответствующий ответ Jeff Bezos is the CEO of Amazon

PS. Альтернативы defaultdict также могут помочь улучшить код.

РЕДАКТИРОВАТЬ: last_msg() код извлекает текст из элемента селена.

def last_msg():
try:
    post = driver.find_elements_by_class_name("_12pGw")
    ultimo = len(post) - 1
    texto = post[ultimo].find_element_by_css_selector(
        "span.selectable-text").text
    return texto
except Exception as e:
    print("Error, input not valid")

Когда я печатаю (d):

defaultdict(<function <lambda> at 0x0000021F959D37B8>, {'Jeff Bezos': 'Jeff Bezos is the CEO of Amazon', 'Serguey Brin': 'Serguey Brin co-founded Google', nan: nan})

Когда я печатаю (df)

   Unnamed: 0           msg                            reply
0           0    Jeff Bezos  Jeff Bezos is the CEO of Amazon
1           1  Serguey Brin   Serguey Brin co-founded Google
2           2           NaN                              NaN
3           3           NaN                              NaN

1 Ответ

0 голосов
/ 19 февраля 2020

Я нашел способ обойти свой вопрос, используя:

d = df.set_index('msg')['reply'].to_dict()
...
        try:
        x = next(v for k, v in d.items() if last_msg() in k)
    except StopIteration:
        x = 'Error, input not listed'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...