Телеграм бот 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 шт):

Автор решения: RSK

Могу предложить такой вариант

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
→ Ссылка
Автор решения: CrazyElf

Ну это же обычный словарь. Вам нужны из него только значения, а ключи не нужны, значит берём от него .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] вообще не нужны.

→ Ссылка