我有一个函数,可以评估它收到的第一个参数的一些参数(此处
item
):
def item_fitness(
item,
fitness_criterion1,
fitness_criterion2
) -> int:
...
return val
它实际上做了什么并不重要。重要的是,它需要
fitness_criterion1
和 fitness_criterion2
来检查 item
的参数并返回一些适应度分数。
我想使用该函数作为
sorted()
中的排序功能,如下所示:
def some_function(items, crit1, crit2):
items = sorted(
items,
key=lambda item, crit1, crit2: item_fitness(
item,
crit1,
crit2
),
reverse=True
)
# Do something with the sorted items
return something
其中
item
取自 items
(正在 item
的 sorted()
实例的实际列表)。
我该怎么做?该函数也被称为 else where ,其特定元素来自
items
。
赋予
key
的函数只能接受单个参数。
functool.partial
创建一个预先应用一些参数的新函数。
def some_function(items, crit1, crit2):
items = sorted(
items,
key=partial(fitness_criterion1 = crit1, fitness_criterion2=crit2),
reverse=True
)
试试这个:
def item_fitness(
item,
fitness_criterion1,
fitness_criterion2
) -> int:
# ...
return "val"
def some_function(items, crit1, crit2):
items = sorted(
items,
key=lambda item: item_fitness(
item,
crit1,
crit2
),
reverse=True
)
# Do something with the sorted items
return "something"
print(some_function([1, 2, 3], "crit1", "crit2")) # something