Телеграм бот aiogram 3.x | Как достать текст из данного набора данных?
Приходит текст ID KEY: {'1': 'name1', '2': 'name2', '3': 'name3', '4': 'name4', '5': 'name5', '6': 'name6', '7': 'name7', '8': 'name8'}
!!!Данные всегда разные, меняются цифра и имена. Мне нужно не конкретно из этого текста подставить, а подставлять уже полученные данные.
Мне надо раскидать по кнопкам 1-2-3-4-5-6-7-8 текст из данных выше, т.е. должны получиться кнопки, где текст кнопки будет соответствовать name1-name2-name3-name4-name5-name6-name7-name8
key_id = data.get_charter() #Это функция, которая выдает мне данные
char1 = key_id[1] # Здесь константы, где должны быть char1 = name1 и т.д.
char2 = key_id[2]
char3 = key_id[3]
char4 = key_id[4]
char5 = key_id[5]
char6 = key_id[6]
char7 = key_id[7]
char8 = key_id[8]
markup = InlineKeyboardMarkup(inline_keyboard=[[
InlineKeyboardButton(char1), InlineKeyboardButton(char2)]
[InlineKeyboardButton(char3), InlineKeyboardButton(char4)]
[InlineKeyboardButton(char5), InlineKeyboardButton(char6)]
[InlineKeyboardButton(char7), InlineKeyboardButton(char8)
]])
await message.answer("", reply_markup=markup)
Ответы (2 шт):
Могу предложить такой вариант
test = {'1': 'name1', '2': 'name2', '3': 'name3', '4': 'name4', '5': 'name5', '6': 'name6', '7': 'name7', '8': 'name8'}
for item in test:
print(test[item])
вывод:
name1
name2
name3
name4
name5
name6
name7
name8
Ну это же обычный словарь. Вам нужны из него только значения, а ключи не нужны, значит берём от него .values()
и делаем списковое включение:
key_id = data.get_charter()
buttons = [InlineKeyboardButton(val) for val in key_id.values()]
markup = InlineKeyboardMarkup(inline_keyboard=buttons, row_width=2)
await message.answer("", reply_markup=markup)
Присваивания вида char1 = key_id[1]
вообще не нужны.