从num_dict
返回所有具有(
值大于或等于min_cutoff
。
参数:
num_dict
中所有键的值均满足截止条件的键。示例:
keys_geq_cutoff({'Alice': 21, 'Brett': 20, 'Carlos': 31}, 21)
{'Alice', 'Carlos'}
我的代码:
def keys_geq_cutoff(num_dict, min_cutoff):
for k, v in num_dict.items():
if (v >= min_cutoff):
return(keys_geq_cutoff(num_dict, min_cutoff))
错误:
test_keys_geq_cutoff (test_methods.TestPython1)
Traceback (most recent call last):
File "/usr/src/app/test_methods.py", line 13, in test_keys_geq_cutoff
result1 = main.keys_geq_cutoff(test_d, 0)
File "/usr/src/app/main.py", line 4, in keys_geq_cutoff
return(keys_geq_cutoff(num_dict, min_cutoff))
File "/usr/src/app/main.py", line 4, in keys_geq_cutoff
return(keys_geq_cutoff(num_dict, min_cutoff))
File "/usr/src/app/main.py", line 4, in keys_geq_cutoff
return(keys_geq_cutoff(num_dict, min_cutoff))
[Previous line repeated 956 more times]
File "/usr/src/app/main.py", line 3, in keys_geq_cutoff
if (v >= min_cutoff):
RecursionError: maximum recursion depth exceeded in comparison
答案 0 :(得分:1)
现在,您将在return语句中再次使用完全相同的参数(因此是RecursionError
)调用该函数。您需要将密钥收集到集合中,然后返回该集合:
def keys_geq_cutoff(num_dict, min_cutoff):
res = set()
for k, v in num_dict.items():
if (v >= min_cutoff):
res.add(k)
return res
或者,可以使用一种不错的设置理解:
def keys_geq_cutoff(num_dict, min_cutoff):
return {k for k, v in num_dict.items() if v >= min_cutoff}
答案 1 :(得分:0)
基本上,您遇到了递归错误,这意味着您要在函数主体中调用函数本身而没有提供exit子句,因此该函数将永远继续下去。为了解决这个问题,您必须创建一个exit子句(例如if语句)
但是您可能不想使用该技术
我认为这是您想要做的:
def keys_geq_cutoff(num_dict, min_cutoff):
l = []
for k, v in num_dict.items():
if v >= min_cutoff:
l.append(k)
return set(l)
答案 2 :(得分:0)
您真的需要一个功能吗?这个问题看起来非常类似于: Return all the keys (as set) from num_dict that have value greater than or equal to min_cutoff
您可以为此使用一个编码器:
num_dict = {'Alice': 21, 'Brett': 20, 'Carlos': 31}
min_cutoff = 21
num_dict_keys = [k for k, v in num_dict.items() if v >= min_cutoff ]
print(num_dict_keys)