【问题标题】:get a list of values from user in streamlit app在 Streamlit 应用程序中获取用户的值列表
【发布时间】:2023-02-22 20:09:31
【问题描述】:

我想从用户那里得到一个值列表,但我不知道如何执行。 我尝试使用如下代码,但这不是正确的方法。

import streamlit as st

collect_numbers = lambda x : [str(x)]

numbers = st.text_input("PLease enter numbers")

st.write(collect_numbers(numbers))

【问题讨论】:

    标签: python streamlit


    【解决方案1】:

    你可以使用,c变量是要输入的数字,你可以改变:

    list = []
    c= 5
    while  c > 0:
        x = input("PLease enter numbers")
        list.append(x)
        print(x)
        c = c - 1
    
    list
    

    【讨论】:

      【解决方案2】:

      据我对您的问题的理解,您需要输出中的输入列表。

      为此,我已经为您编写了一些代码。您也可以尝试使用这行代码来获得与列表类似的输出类型。

      代码 :

      numbers = []
      while True:
          num = input("Enter a number (or press Enter to stop): ")
          if num == "":
              break
          numbers.append(num)
      
      print(numbers)
      

      执行代码:

      Enter a number (or press Enter to stop): 1
      Enter a number (or press Enter to stop): 2
      Enter a number (or press Enter to stop): 3
      Enter a number (or press Enter to stop): 6
      Enter a number (or press Enter to stop): 4
      Enter a number (or press Enter to stop):   // here I stop the program and get output in next line
      ['1', '2', '3', '6', '4']
      

      【讨论】:

      • 这是错误,代码与 streamlit 应用不兼容 DuplicateWidgetID:有多个相同的 st.text_input 小部件具有相同的生成密钥。创建小部件时,会根据其结构为其分配一个内部键。具有相同结构的多个小部件将导致相同的内部密钥,从而导致此错误。要修复此错误,请将唯一的键参数传递给 st.text_input。回溯:文件“/app/vidualization.py”,第 206 行,在 <module> num = st.text_input("PLease enter numbers")
      • @user14269252 基本上这段代码是执行操作并获得预期输出的类似方式。在这里我不会包括你的代码。在这里,我解释了如何以类似的方式进行操作。我希望你明白
      • 当然,我也是按照你的代码修改的,错误是这样的
      • numbers = [] while True: num = st.text_input("请输入数字") if num == "": break numbers.append(num) st.write(numbers)
      • 我认为你在代码中有一些错误。因为当我在 Google colab 中运行这段代码时,它运行良好。
      【解决方案3】:

      需要有关您要执行的操作的更多信息。如果您需要一些指定的值,您可以尝试使用不同的文本输入作为列。您可以根据需要显示任意多的列,以下代码是一个简单的示例。

      col1, col2 = st.columns(2)
      
      with col1:
           val1 = st.text_input("Enter first value")
      
      with col2:
           val2 = st.text_input("Enter second value")
      
      list_val = [val1,val2]
           
      

      您还可以要求用户输入以逗号分隔的值,然后使用它来制作您想要的列表

      【讨论】:

      • 非常感谢,这更接近我现在所做的。我想在用户提供 ids 列表后过滤数据框 ids 列,我现在将测试您的代码。
      猜你喜欢
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多