我想从浮点类型的可能值列表中进行选择:
values = [400e-9,435e-9,498e-9]
ipywidgets 模块提供 Select 和 Dropdown 小部件,它们接受字符串列表或字典。在后一种情况下,将显示键并在选择相应键时使用值。请参阅文档中的小部件列表。
# Required imports for examples below
import ipywidgets as widgets
from IPython.display import display
事实上,直接提供我的值列表会引发错误,因为这些值是浮点数,而不是字符串。
# 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 results widget。
所以问题是,有没有办法对选择小部件中的条目进行排序?
一个明显的解决方法是只为小部件提供我的字符串列表(keys
在上面的示例中调用)并自己实现从列表中查找相应的值,但我希望会有一个更优雅的解决方案。