Comment puis-je vérifier que la liste a un et un seul truthy valeur?

En python, j'ai une liste qui devrait avoir un et un seul truthy valeur (qui est, bool(value) is True). Est-il un moyen astucieux pour vérifier cela? Maintenant, je suis juste une itération à travers la liste et vérifier manuellement:

def only1(l)
    true_found = False
    for v in l:
        if v and not true_found:
            true_found=True
        elif v and true_found:
             return False #"Too Many Trues"
    return true_found

Cela semble peu élégante et pas très pythonic. Est-il un meilleur moyen pour ce faire?

Je pense que votre solution est très fin et il est pythonic!
Common Lisp: (= 1 (count-if #'identity list)).
sum(lst) == 1
POUR être claire: voulez-vous vérifier qu'il n'existe qu'un True ou un seul truthy valeur?

OriginalL'auteur Matthew Scouten | 2013-05-28