Filter()函数具有两个输入的功能

时间:2014-08-06 17:54:02

标签: python python-2.7 filter

我正在尝试编写一个过滤函数,该函数向我传递一个字典单词列表,这些单词可以由机架中的字母组成。

def test(Rack, word):
"""test whether a string can be formed with the letters in the Rack."""
if word == "" or Rack == []:
    return True
elif word[0] in Rack:
    return True and test(Rack, word[1:])
else:
    return False

然后我的地图功能需要测试功能。

def stringsInDic(Rack, dictionary):
    return filter(test(Rack, dictionary) == True, dictionary)

但正如我们所看到的,过滤器的第二个输入应该是字典中的一个元素,这是过滤器放入的元素。所以我不确定如何在test中编写第二个参数。

请帮忙!!!谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用functools.partial

def stringsInDic(Rack, dictionary):
    func = functools.partial(test, Rack)
    return filter(func, dictionary)

partial允许您创建一种占位符函数,您可以在以后添加更多参数。因此func变为test(Rack, ...)。如果您稍后致电func(something),那么您确实正在执行test(Rack, something)