Python 将Jupyter小部件下拉列表传递到第二个下拉列表
我有一个问题是关于如何使用jupyter小部件,即下拉菜单来生成工作流。目前我的意图不起作用,我的目标是:Python 将Jupyter小部件下拉列表传递到第二个下拉列表,python,jupyter-notebook,Python,Jupyter Notebook,我有一个问题是关于如何使用jupyter小部件,即下拉菜单来生成工作流。目前我的意图不起作用,我的目标是: def league_interact(): choice = interact(team_names, league_select=league_names()) return type(choice) league_interact() 运行生成列表的函数 这个列表被输入到一个下拉列表中,我从中选择一个(x) x指的是另一个函数,它有一个字典,它拾取与该键相关的所有值
def league_interact():
choice = interact(team_names, league_select=league_names())
return type(choice)
league_interact()
def league_names():
league_list = []
data_filenames = [data_file for data_file in os.listdir()
if data_file.endswith('.json')]
with open(data_filenames[0]) as json_file:
data = json.load(json_file)
for x in data:
if x['Competition'] is not None and x['Competition'] not in league_list:
league_list.append(x['Competition'])
return league_list[1:]
接下来要做的是,获取该列表,搜索同一组字典,搜索属于该联盟的所有球队,并将它们添加到列表中
def team_names(league_select):
team_list = []
data_filenames = [data_file for data_file in os.listdir()
if data_file.endswith('.json')]
with open(data_filenames[0]) as json_file:
data = json.load(json_file)
for x in data:
if x['Competition'] == league_select and x['Team'] not in team_list:
team_list.append(x['Team'])
return team_list
我想与之互动的是,第一个联赛列表被传递到一个下拉列表,从中选择一个联赛。这将把联盟转移到第二个功能,吸引所有球队。如何做到这一点取决于以下几点:
def league_interact():
choice = interact(team_names, league_select=league_names())
return type(choice)
league_interact()
现在这项工作成功了,列表被成功地传递了,但是我无法工作的是,从这里开始的交互被转换成一个变量,然后我可以传递给后续的函数进行进一步的处理
下面是json内容的一个示例:
[{"Team": "Yeovil Town FC", "Gender": "M", "Competition": "National League", "Earliest Season": "2003-2004", "Latest Season": "2020-2021", "Total Seasons": "18", "Championships": "1", "Other Names": "", "Code": "bd5179b9", "Prefix": "Yeovil-Town-Stats"},
{"Team": "Yeovil Town LFC", "Gender": "F", "Competition": "", "Earliest Season": "2017", "Latest Season": "2018-2019", "Total Seasons": "3", "Championships": "", "Other Names": "", "Code": "a506e4a2", "Prefix": "Yeovil-Town-Women-Stats"},
{"Team": "York City FC", "Gender": "M", "Competition": "", "Earliest Season": "2002-2003", "Latest Season": "2019-2020", "Total Seasons": "13", "Championships": "0", "Other Names": "", "Code": "e272e7a8", "Prefix": "York-City-Stats"},
{"Team": "Yorkshire Amateur AFC", "Gender": "M", "Competition": "", "Earliest Season": "2019-2020", "Latest Season": "2020-2021", "Total Seasons": "0", "Championships": "", "Other Names": "", "Code": "66379800", "Prefix": "Yorkshire-Amateur-AFC-Stats"}]
问题:在上述情况下,我将如何使用interact生成由第一个选项创建的列表,而不是函数?我把类型拉到这里,它是一个“函数”,而不是预期的列表。我试着使用.value和一些导数,但没有一个能给出一个值。知道如何处理这个问题吗,这样我就可以生成第二个下拉列表了
我尝试了以下操作,但出现错误:
def league_interact():
choice = interact(team_names, league_select=league_names())
return choice
def team_interact():
choice2 = interact(team_code, team_select=league_interact())
team_interact()
错误:ValueError:无法转换为小部件
谢谢!我确实浏览了文档,但如何处理这个问题我并不十分感兴趣。好的,所以我实际上设法解决了这个问题:
@interact(league = league_box)
def choose_both(league):
team_box.options = team_names(league_box.value)
return
@interact_manual(team = team_box, use_season = season_box)
def choose_team(team, use_season):
return team_choice_cap(team_data(team),use_season)
def team_choice_cap(data_set, use_season):
code = data_set['Code']
prefix = data_set['Prefix']
return parse_seasons(code,prefix,use_season)
上面的interact和interact_手册可用于为后一个列表提供信息,然后通过手动调用调用其余细节