【发布时间】:2021-04-30 23:47:36
【问题描述】:
我有以下函数在人名上执行fuzzymatching。它需要一个字典,其中的键是我要匹配的名称。创建字典很昂贵,我将在可能已经创建字典的笔记本中使用该函数......所以我想保留每次运行该函数时不创建它的选项。为此,我将其默认为无,因此我可以在需要时通过它。如果我还没有初始化它,它会自己初始化。
注意get_player_dict()是返回字典的函数:
def match_player_names(input_name, player_dict=None):
matches = []
if player_dict:
for player in list(map(lambda player: player.lower(), player_dict.keys())):
if fuzz.partial_ratio(input_name, player) > 75:
matches.append(player)
else:
match_player_names(input_name, player_dict=get_player_dict())
return matches
这不会返回任何内容(matches 是 [])。但是,如果我只是复制/粘贴 True 条件中的代码并将递归替换为字典的初始化,它就可以正常工作(如下所示):
else:
for player in list(map(lambda player: player.lower(), player_dict.keys())):
if fuzz.partial_ratio(input_name, player) > 75:
matches.append(player)
任何想法为什么递归不起作用?
【问题讨论】:
标签: python python-3.x recursion