0
votes

Soulever une exception avec ensemble (liste) .Différence et déclaration conditionnelle

J'ai deux listes: xxx pré>

Je veux vous assurer que la liste1 contient au moins tous les éléments de la liste2 (la commande n'a pas d'importance). Sinon, je veux soulever une exception. P>

set = set(list2).difference(List1)

if set != "":
    raise Exception('Missing required columns',set)


0 commentaires

5 Réponses :


1
votes

Vous pouvez essayer: XXX PRE>


>>> if not set(l1) == set(l2):
...     raise Exception('Missing required columns',set)
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
Exception: ('Missing required columns', <class 'set'>)
>>>


0 commentaires

1
votes

Vous pouvez utiliser tout fonction: xxx

ou toute fonction : xxx


0 commentaires

1
votes

Il y a 2 problèmes avec la logique.

  1. Vous attribuez à la section correspondant au résultat de set.difefence . Ceci est probablement indésirable.

  2. Vous comparez un définir (comme retourné par set.difefence ) sur un str ( "" / code>) de sorte que la logique augmente toujours l'exception.

    Peut-être essayer: xxx


0 commentaires

0
votes

Essayez comme ceci peut-être:

if not (set(list2) <= set(List1)):
    raise Exception('Missing required columns',set)


0 commentaires

1
votes

Vous vérifiez le mauvais type de données. set.difefence () retourne un définir , pas un str . Donc, dans votre relevé si , vous devez vérifier un ensemble vide ( SET () ) ou vérifier la longueur avec len (défini) . Une chose, cependant, évitez de nommer des variables / fonction avec des noms déjà existants dans la portée globale (telle que l'ensemble intégré ). Cela peut être problématique.


0 commentaires