I had a broken function that should either wring all items through a function, or only run items that pass True from a qualifying function, if a qualifying function is given
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()}
It was broke because it required the second function to transform. I now have
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()}
which is ugly but works. Can I do this in one line, where I either run all values through the callback, or check for truth in the second callback first and only run things that pass? Thank you
v is only returned if there is a qualification callback and it returns False for the given value, so we can check for this condition and either return v if both conditions hold or else 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()}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With