173 votes

Comment puis-je utiliser if/else dans une compréhension de dictionnaire ?

Existe-t-il un moyen dans Python 2.7+ de créer quelque chose comme ce qui suit ?

 { something_if_true if condition else something_if_false for key, value in dict_.items() }

Je sais que vous pouvez faire n'importe quoi avec juste 'if' :

 { something_if_true for key, value in dict_.items() if condition}

314voto

Marcin Points 25366

Vous l'avez déjà compris : A if test else B est une expression Python valide. Le seul problème avec votre compréhension de dict comme indiqué est que la place d'une expression dans une compréhension de dict doit avoir deux expressions, séparées par deux points :

 { (some_key if condition else default_key):(something_if_true if condition
          else something_if_false) for key, value in dict_.items() }

La if agit comme un filtre, ce qui est différent de l'expression conditionnelle.

1voto

Gavin Ray Points 19

Il peut également être utile de mentionner que les instructions If only mettent le if à la fin :

 {_ for _ in iterable if True}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X