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

时间:2016-01-25 20:07:18

标签: python dictionary-comprehension

我有一个破坏的功能,应该通过一个函数拧掉所有项目,或者只运行一个合格函数传递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()}

这是丑陋但有效。我可以在一行中执行此操作,我可以通过回调运行所有值,也可以先在第二个回调中检查真值,然后只运行通过的内容?谢谢

2 个答案:

答案 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()}