使用字典理解 if/else 逻辑来确定是否使用函数

using dict comprehension if/else logic to determine using a function or not

我有一个损坏的函数,它应该要么通过一个函数拧紧所有项目,要么只有 运行 个从限定函数传递 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()}

虽然丑陋但有效。我可以在一行中执行此操作吗,我可以通过回调 运行 所有值,或者首先检查第二个回调中的真实性,并且只检查 运行 通过的东西?谢谢

v 仅在存在资格回调时才被 return 编辑,并且对于给定值 returns False,因此我们可以检查此条件以及 return v 如果两个条件都成立,否则 return callback(v).

def transform_dictionary(dictionary, callback, qualification_callback=None):
    return {k: v if qualification_callback and not qualification_callback(v) else callback(v) 
            for k, v in dictionary.items()}

您可以使用常量函数作为默认值而不是 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()}