python - 如何对 ipywidgets 下拉或选择中的条目进行排序?

标签 python jupyter jupyter-notebook ipywidgets

我想从 float 类型的可能值列表中进行选择:

values = [400e-9,435e-9,498e-9]

ipywidgets 模块提供了 Select 和 Dropdown 小部件,它们接受字符串列表或字典。在后一种情况下,将显示这些键,并在选择相应的键时使用这些值。请参阅the list of widgets in the docs .

# Required imports for examples below
import ipywidgets as widgets
from IPython.display import display

事实上,直接提供我的值列表会引发错误,因为这些值是 float ,而不是字符串。

# This will raise a TraitError
w = widgets.Select(options=values,description='Select one of the values:')
display(w)

所以我创建一个字典并将其传递给小部件:

keys = ["{:.2e}".format(val) for val in values]
valsdict = dict(zip(keys,values))
w = widgets.Select(options=valsdict, description='Select one of the values:')
display(w)

但是,由于字典未排序,因此生成的小部件以看似随机的顺序显示选项。在这种情况下,当我运行它时,498e-9 出现在 435e-9 之前,如以下屏幕截图所示:screenshot of the resulting widget .

所以问题是,有没有办法对选择小部件中的条目进行排序?

一个明显的解决方法是仅向小部件提供我的字符串列表(在上面的示例中称为keys)并实现自己从列表中查找相应的值,但我希望能够是一个更优雅的解决方案。

最佳答案

您可以传递元组列表:

vals = list(zip(keys,values))
w = widgets.Select(options=vals, description='Select one of the values:')

关于python - 如何对 ipywidgets 下拉或选择中的条目进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35023744/

相关文章:

python - 当表单操作设置为 "."时,Django 重定向到不同的 View

python - 对数生成的项目值

docker - 部署 jupyterhub 时无法从 config.yaml 运行生命周期命令

python - 在 Jupyter 中,如何默认使用 matplotlib ggplot 样式?

python - 合并某些行不相同的多个数据框

python - 将行中的值移动到 pandas 的新列中

Python 3 排序 : Custom comparer removed in favor of key - why?

python - Jupyter 笔记本错误

IPython(Jupyter)笔记本在所有方程中产生鬼线

html - 如何将 Jupyter Notebook 转换为适合 Wordpress 的 HTML