Возвращение ключей при выборе значения в selectbox в streamlit

есть датафрейм, который содержит в себе ключ и значений типо 1 яблоко 2 банан .... Я на основе этого дф создаю selectbox через streamlit в который передаю значения и при выборе чего-то в нем возвращаются значения, как-то можно сделать, чтобы возвращались ключи?


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

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

Если вы в набор выбираемых значений передаете объекты целиком со всеми полями (а не просто строки), то и возвращается выбранный объект целиком, из него вытаскиваете ключ.

Минимальный пример:

import streamlit as st

from dataclasses import dataclass


@dataclass
class Row:
    id: int
    name: str

    def __str__(self):
        return self.name  # В комбобоксе будут выводиться только названия без id


selected = st.selectbox("Select something:", (
    Row(1, "Яблоко"),
    Row(2, "Банан"),
    Row(3, "Ананас"),
))

st.write(f"Selected: {repr(selected)}, id={selected.id}")

Скриншот

→ Ссылка