Telebot, поиск сообщения от пользователя в значениях словаря

Я пытаюсь по введенному сообщению пользователя совершить проверку есть ли значение в словаре (условие elif). По ключу например (Условие if) проверяет и выполняет алгоритм отлично, но по значению почему-то игнорирует.

dict = {'one':["один","ein"], "two":["два","zwei"]}

@bot.message_handler(content_types='text')
def message_reply(message):
    if message.text in dict:
        bot.send_message(message.chat.id,"Я нашел перевод на русском и немецком.")
    elif message.text in dict.values():
        bot.send_message(message.chat.id, "Я нашел перевод на английском.")
    else:
        bot.send_message(message.chat.id, "К сожалению перевода нет.")

Подскажите где может быть ошибка?


Ответы (1 шт):

Автор решения: Сергей Шашко

у вас выходит message.text in [['один', 'ein'], ['два', 'zwei']]. message.text сравнивается с ['один', 'ein'], на следущей интеракций c ['два', 'zwei']. А вам надо message.text in ["один", "ein", "два", "zwei"]

elif message.text in [y for x in dict.values() for y in x]:

я бы на вашем месте структуру данных поменял бы

[{'en': 'one', 'ru': 'один', 'ge': 'ein'}, {'en': "two", 'ru': 'два', 'ge': 'zwei'}]

или

[['one', 'один', 'ein'], ["two", 'два', 'zwei']]
→ Ссылка