Вашего текущий кода и большинство решений с использованием all
или any
перестанут оценивать записи в Словаре, как только будет найдено первое Ложное значение (эта функция называемый «короткое замыкание»). Если вы должны вызов func
для каждого значения в Словаре, и если func
возвращает истину или ложь (то есть, вы не полагаясь на BOOL интерпретации Пайтона типов, не BOOL), то вы можете использовать sum
:
if sum(func(arg, my_dict[k]) for k in my_dict) == len(my_dict):
Это делает использование Python эквивалентности True
с 1 и False
со значениями 0.
Если func
возвращается без BOOL, затем обернуть вызовы func
с bool
:
if sum(bool(func(arg, my_dict[k])) for k in my_dict) == len(my_dict):
'для c в dict' было бы большим улучшением здесь, поскольку OP специально отмечает, что он хочет проверить все значения в dict. (Хотя решение thefourtheye еще лучше, по крайней мере, под Python 3). –
@ LennartRegebro Хорошая точка, пропустила эту линию. –
@ LennartRegebro - текущий код OP не проверяет все значения, но будет замыкаться на первое значение, которое является False. – PaulMcG