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

Рейтинг: 0Ответов: 1Опубликовано: 12.03.2023

Есть датафрейм, который содержит в себе ключ и значений типа

1 яблоко
2 банан
....

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

Ответы

▲ 1

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

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

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}")

Скриншот