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']]