-3
votes

Comment vérifier l'erreur dans la condition de «si» pour prendre des décisions?

suppose, j'ai un dictionnaire: xxx

et mon code est comme: xxx

Ceci renvoie un KeyError < /code >.


sur le myList.get (4, "quelque chose") . Mais je cherche quelque chose d'autre.

y a-t-il quelque chose comme: xxx

une méthode comme celle-ci est expliquée ici https://realpython.com/python -keyerror/ . J'ai essayé. Mais il soulève toujours un keillerror lorsque myList [4] n'existe pas. Quelqu'un peut-il m'aider à trouver ce que je manque ici? xxx

essayez ... sauf la méthode n'est pas appropriée pour moi. Cela rend mon code long et plus lent.


3 commentaires

Est-ce que cela répond à votre question? Erreur de clé de manutention dans Python


Je vais aller pour un bowvote pour ces commentaires: l'essai ... Sauf méthode n'est pas approprié pour moi. Cela rend mon code long et plus lent et mais je cherche quelque chose d'autre . Je ne comprends pas ce que vous voulez et sur quelle base vous refusez les 5 réponses que vous avez données.


@Nicolasgervais Vous n'avez vraiment pas compris, c'est pourquoi vous n'avez pas réalisé pourquoi je n'ai pas accepté ces réponses. Voir, la réponse que j'ai marquée (pour votre objectif d'apprentissage). En passant, la collecte de la réputation sur Stackoverflow n'est pas ma vision.


4 Réponses :


0
votes

Vous pouvez obtenir une liste des clés d'un dictionnaire avec myList.keys () , vous pouvez donc le faire: xxx

en fonction de ce que vous faites, Vous êtes peut-être également intéressé de savoir que vous pouvez avoir la longueur d'un dictionnaire à l'aide de len (myList) , donc ce que vous faites (avec incrémentation des touches commençant par 1 ). également être fait plus génériquement comme celui-ci: xxx

Je pense que vous devez renommer myList à myDICT . Ce n'est pas une liste. C'est un "dictionnaire", a.k.a. a dict .

Enfin, essayez d'éviter d'utiliser Essayer, sauf les blocs où vous pouvez. Si vous allez utiliser essayer, sauf , il est préférable d'attraper une erreur particulière (comme KeyError comme vous l'avez mentionné). Pour voir la bonne façon d'attraper un KeyError, voir la réponse par @ Jeanpierre-Fisher (édité utilement par @ Ann-Zen).


2 commentaires

Génial! Je devrais y penser plus tôt. Merci beaucoup. Marqué votre réponse comme solution. Mais pouvez-vous expliquer, qu'est-ce qui ne va pas avec si KeyError dans MyList [4]: ​​? Je suis préoccupé par la mylist / MyDICT. Merci quand même.


Lorsque vous dites "keillerror" dans myList [4] , le premier "interprète" de Python va évaluer myList [4] , qui "soulève" une exception KeyError . Étant donné que cette exception est soulevée, le code s'arrête. Il ne vérifiera pas si "KeyError" est une clé du dictionnaire (qui est ce que ce code fait). Pour voir la bonne façon d'attraper un KeyError, voir la réponse par @ Jeanpierre-Fisher (édité serviblement par @ Ann-Zen).



0
votes

Vous pouvez l'envelopper dans une déclaration d'essai et traiter l'erreur: xxx


0 commentaires

1
votes

Vous pouvez l'attraper à l'aide d'un essai à l'exception du bloc:

myList = {1:'one', 2:'two', 3:'three'}

try:
    last = myList[len(myList)]
except KeyError as e:
    print('KeyError: ', e)


0 commentaires

-2
votes

Le moyen sûr le plus simple, si vous ne voulez pas utiliser, essayez à l'exception du bloc (qui est recommandé la meilleure pratique) consiste à simplement utiliser ceci:

last = myList[len(myList)]


5 commentaires

Ceci est une sous-section exacte de ma réponse


J'ai écrit cela il y a 34 minutes et vous avez dupliqué le mien il y a 8 minutes. Regardez ci-dessus C'était dans ma première réponse il y a 34 minutes


Oh tu as raison. Je m'excuse. Excuses sincères. Je n'ai pas intentionnellement dupliquer votre réponse. Nous avons indépendamment écrit exactement la même ligne de code. Je vais annuler mon bowvote.


Pas de soucis. Nous sommes que vous pouvez supprimer le bowvote? Merci JP


Désolé, je pensais que je l'ai fait mais il semble que je ne peux pas annuler le vote. Pour ce faire, j'ai voté 2 autres bonnes réponses que vous avez sur d'autres questions.