我有一个破坏的功能,应该通过一个函数拧掉所有项目,或者只运行一个合格函数传递True
的项目,如果给出一个合格的函数
def transform_dictionary(dictionary, callback, qualification_callback=None):
return {k: callback(v) if qualification_callback and qualification_callback(v) else v for k, v in dictionary.items()}
它被破坏了,因为它需要第二个功能进行转换。我现在有
def transform_dictionary(dictionary, callback, qualification_callback=None):
if qualification_callback:
return {k: callback(v) if qualification_callback(v) else v for k, v in dictionary.items()}
else:
return {k: callback(v) for k, v in dictionary.items()}
这是丑陋但有效。我可以在一行中执行此操作,我可以通过回调运行所有值,也可以先在第二个回调中检查真值,然后只运行通过的内容?谢谢
答案 0 :(得分:6)
v
仅在存在资格回调时返回,并且对于给定值返回False,因此我们可以检查此条件,如果两个条件都保持,则返回v
,否则返回{{ 1}}。
callback(v)
答案 1 :(得分:4)
您可以使用常量函数作为默认值,而不是None
:
def transform_dictionary(dictionary, callback, qc=lambda x: True):
return {k: callback(v) if qc(v) else v for k, v in dictionary.items()}