Python : Les structures de données

Générer directement un dictionnaire

Testez gratuitement nos 1255 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Dans cette vidéo, générez directement un dictionnaire à partir de la lecture de votre fichier CSV. Par la suite, vous utiliserez la syntaxe de compréhension de dictionnaire.
08:26

Transcription

On n'y tient plus, le fait de faire deux fois, un parcours de notre fichier pour récupérer sur les mêmes lignes, deux tuples différents, ce n'est pas possible. On ne peut pas continuer comme ça. Donc, on va essayer d'être un petit peu plus élégant que ça. On va y arriver assez facilement mais je n'aimerai pas y arriver du premier coup. Je vous explique, si on regarde directement la solution qui pourrait nous venir à l'esprit, et bien on va arriver rapidement à une solution assez élégante, quand même, mais ça vaut la peine de procéder par étape pour découvrir les subtilités du langage Python, et sa façon de travailler avec des structures de données. Donc, on va rester sur des étapes pour aboutir à la solution. D'abord, on arrête ça, et puis on va réfléchir à parcourir une seule fois notre fichier. On peut se dire ; gardons notre raisonnement qui est ici de compréhension de listes, c'est plutôt pas mal, et puis comment pourrait-on récupérer les deux valeurs ? Et bien assez facilement, ici. Alors, qu'est-ce qu'on crée avec ça ? On crée un tuple de, ici, codes. Pourquoi ne créerions nous pas un tuple à deux niveaux ? C'est à dire à deux dimensions. On crée un tuple de tuples, qui va contenir ; chaque tuple sera le code et le nom du département. Et puis on fait un tuple de tous ces tuples. Donc ça nous donnerait, par exemple on met ça dans départements, et puis on garde ça bien au chaud et on va regarder le contenu, déjà voir si ça nous convient. Bon, c'est pas mal. Maintenant, si on pense par étape et pas directement à la solution, on pourrait se dire ; est-ce qu'on pourrait conserver ces tuples comme avant, c'est à dire avoir, mes codes et mes départements. Alors déjà il faudrait pouvoir renverser tout ça, de façon à avoir avec ça, une liste ou un tuple des premières valeurs. Et puis un deuxième tuple des noms de départements, ce qu'on avait avant. Est-ce qu'on peut faire ça en une seule fois ? Alors la réponse est oui, on peut faire ça en une seule fois en utilisant le zip , mais avec un passage de paramètres particulier. Je vous montre, on prend ici notre fonction zip et puis, on va envoyer comme paramètres tout ceci, on ferme une parenthèse supplémentaire, mais avec l'opérateur splat. c'est à dire ; unpacking. Je vous explique. Lorsqu'on appelle zip avec une liste de liste, ou un tuple de tuple et qu'on le passe avec l'opérateur unpacking, il va se passer ceci finalement le zip va prendre la première valeur et la mettre avec la deuxième, avec la troisième, avec la quatrième, etc, du premier élément du deuxième niveau de dimension, c'est à dire, concrètement on va avoir: 01 ; 02 ; 03 ; 04 ; 05 , dans un premier tuple, et ensuite un deuxième tuple qui va avoir 1N allié. Finalement c'est exactement ce qu'on veut, on va voir le résonnement ici. Bien entendu avant de voir le résonnement, il faut qu'on réfléchisse un peu mieux, parce qu'on a ici, on ouvre une parenthèse, deux parenthèses, on en ferme deux, j'en ai une troisième. Il faut bien entendu que je gère ici, mon opérateur splat sur tout ceci, ok, et qu'on va passer en paramètres aussi. Donc c'est bon, on essaye. On a un zip object, on a compris. On fait un tuple à partir de ça pour l'afficher, et ce que je vous disais, un tuple, le premier sous-tuple de deuxième dimension, c'est un grand tuple avec toutes les valeurs de code, et puis je vais à la fin, ça sera plus pratique. Et ensuite, un deuxième tuple. Donc on a une première dimension, à l'intérieur on a deux tuples, et ces deux tuples comportent un tuple de tous les codes, virgule , un tuple de tous les départements. Et qu'est-ce que je peux faire, et bien, utiliser directement l'affectation multiple. Dire : code - virgule - départements pour récupérer mes deux tuples. Je devrais pouvoir faire ça même directement, sans avoir à convertir. On va avoir à l'intérieur, un itérateur avec deux sous-éléments, et puis, le fait de l'affecter à ceci, c'est comme si j'affecte chaque membre d'une liste à des valeurs différentes, donc je fais une sorte de unpacking si vous voulez, à travers cette affectation multiple. On va voir ce que ça donne, et bien ce n'est pas mal ! Voyez, j'ai 1N allié et donc évidemment si je refais un print de code, et bien j'ai exactement ce qu'il me faut, exactement ce que j'ai eu avec ça avant. Et donc il me suffit de générer un dictionnaire avec ça, simplement, je peux reprendre mon raisonnement maintenant tout à fait comme avant, et reprendre mon mélange. C'est fait mais ça pourrait être encore un tout petit peu plus facile d'ailleurs, parce que ça c'est une façon de voir les choses qui peut être pratique, si vous avez besoin des deux tuples ou listes différents pour les traiter ensuite mais là je veux directement arriver à un dictionnaire. Ce que je fais, c'est que, d'une certaine façon, je zippe pour en avoir deux, ensuite je rezippe pour n'en faire qu'un. Mais je peux le faire en une seule fois, non ? Je vais commenter ceci, et puis pourquoi ne pas essayer directement de prendre ça. Finalement, qui nous fait un tuple de tuples, et puis le passer dans le constructeur de dictionnaire. Est-ce que ça marche ? Le dictionnaire va se construire à partir de tous mes tuples, mes paires de codes et départements. Et je vais le mettre directement dans une variable, qui s'appelle mélange. Bref, je fais la même chose qu'avant mais en une seule fois, est-ce que ça marche ? Autant le faire comme ça, n'est-ce pas ? Donc je peux le créer comme ça. Et finalement si votre esprit commence à s'assouplir sur la réflexion qu'on a, quand on travaille avec des collections, des structures de données en Python , ça commence à devenir assez logique. Un tuple de tuples, je le passe dans un constructeur de dictionnaire, il comprend, et il me génère mes paires clé-valeurs. Une note, on peut le faire encore différemment, je garde ça, je vous le reprends ici, je le mets en commentaire ici, et puis je vais vous parler, juste brièvement, de quelque chose qui est purement du Python 3, vous ne l'avez pas si vous travaillez en Python 2, c'est de la compréhension de dictionnaires. On a vu la compréhension de listes, on vient de l'utiliser. Donc si j'utilise ça, purement, c'est de la compréhension de listes, avec les parenthèses qui vont bien. Donc, on sait ici qu'on va générer une liste, parce que c'est quelque chose qui fait une itération finalement. Donc le résultat c'est une liste. Mais je peux quelque part réagir de la même façon sur un dictionnaire, un dictionnaire est une collection de paires clé-valeurs, où la clé et la valeur sont exprimées avec un : , la relation entre la clé et la valeur est exprimée avec un : c'est ce qu'on fait quand on construit un dictionnaire. Vous voyez, on le voit d'ailleurs clairement ici. Donc la syntaxe du dictionnaire c'est et on passe à la suite: clé : valeur. Et bien, on peut construire, avec une compréhension de dictionnaire, la même chose, mais on va indiquer qu'on est avec des accolades sur de la compréhension de dictionnaire et à l'intérieur, on construit ces paires clé-valeurs. On va simplement les construire, de la façon suivante : avec le : , comme ceci, et on va dire maintenant tu me fais une boucle là dessus, tu me fais mes paires clé-valeurs avec deux points, puis tu me retournes un dictionnaire. Et ça ça s'appelle de la compréhension de dictionnaire. Ca peut être pratique, et voilà le même résultat comme vous aimez, mais là on est quand même arrivé à une syntaxe qui est particulièrement clean, élégante, lisible même, si vous avez un tout petit peu d'habitude de Python. Si on ne lit pas les commentaires, on a quand même fait ça en deux lignes, enfin une ligne, deux lignes, on a fait un reader, ensuite on a utilisé la compréhension de dictionnaire, c'est quand même plutôt compact.

Python : Les structures de données

Maîtrisez les ressources du langage de programmation Python. Abordez en détail les structures de données natives telles que les listes, les tuples et les dictionnaires.

2h07 (23 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Votre/vos formateur(s) :
Date de parution :30 août 2016
Durée :2h07 (23 vidéos)

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !