如何在Streamlit的st.sidebar.selectbox中设置别名并获取实际值?
Streamlit实现选择框显示别名、返回实际值
Streamlit完全支持这个需求,有两种常用的实现方式:
方法一:使用字典映射
先定义别名与实际raw值的对应关系,选择框显示字典的键,选中后通过字典取值得到实际raw值:
import streamlit as st # 定义别名和实际值的映射字典 name_map = { "Name A": "A949", "Name B": "B384" } # 侧边栏选择框,显示别名选项 selected_alias = st.sidebar.selectbox("选择目标名称", options=list(name_map.keys())) # 获取对应的实际raw值 raw_name = name_map[selected_alias] st.write(f"当前获取的raw值:{raw_name}")
方法二:使用元组列表+格式化函数
将每个选项定义为(显示别名,实际raw值)的元组,通过format_func指定选择框显示的内容,选中后提取元组的第二个元素得到raw值:
import streamlit as st # 定义包含显示名和实际值的元组列表 name_options = [("Name A", "A949"), ("Name B", "B384")] # 侧边栏选择框,用format_func设置显示文本 selected_item = st.sidebar.selectbox( "选择目标名称", options=name_options, format_func=lambda item: item[0] # 指定显示元组的第一个元素 ) # 提取实际raw值 raw_name = selected_item[1] st.write(f"当前获取的raw值:{raw_name}")
两种方法都能实现你要的效果,字典映射更适合选项数量多、需要频繁修改映射关系的场景;元组列表的方式代码更紧凑,适合选项较少的情况。
内容的提问来源于stack exchange,提问作者user5831311
相关产品推荐
相关产品推荐

