Streamlit中如何根据选中数字生成对应文本框并解决TypeError报错
错误原因
range(int(number_of_replacement))返回的是整数类型的可迭代对象,每次遍历仅输出单个整数,你使用i, old_val两个变量尝试拆分单个整数,才会触发TypeError: cannot unpack non-iterable int object报错。
修复代码
直接删除循环中多余的old_val变量声明即可,old_val可以在循环内部正常赋值:
number_of_replacement = st.number_input("Number of values To Replace",0,100) with st.form(key='my_form'): col1,col2 = st.columns(2) st_input = st.number_input if is_numeric_dtype(df[columns]) else st.text_input with col1: for i in range(int(number_of_replacement)): old_val = st_input("Old value",key=i)
可选优化建议
- 如果需要收集所有输入的旧值,可以提前初始化列表存储结果,比如在循环外写
old_vals = [],循环内部追加old_vals.append(st_input("Old value",key=i)) - 可以加判断逻辑,当
number_of_replacement为0时给出提示,避免用户看不到输入框产生误解
内容的提问来源于stack exchange,提问作者DevLeb2022
相关产品推荐
相关产品推荐

