У меня была сломанная функция, которая должна либо сжимать все элементы через функцию, либо только запускать элементы, которые передают True
из квалификационной функции, если задана квалифицируемая функцияс использованием определения dict, если логика/else для определения с помощью функции или нет
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()}
, который является уродливым, но работает. Могу ли я сделать это в одной строке, где я либо запускаю все значения через обратный вызов, либо сначала проверяю правду во втором обратном вызове, а только запускаю все, что проходит? Спасибо
о, так дс всегда возвращает истину , и он всегда работает, но по умолчанию он просто игнорируется. очень pythony, ty – codyc4321