Python Tips 3 - Convert two lists into a dictionary

in STEMGeekslast year

Python Tips - Convert two lists into a dictionary

by me

Aujourd'hui nous allons voir quelque chose d'assez simple mais qui peut s'avérer très utile. Quand on programme en Python, on aime bien trouver des moyens de raccourcir le code quand c'est possible. A cet effet, Python intègre de très nombreuses fonction et méthodes de classes très utiles.


Mais alors qu'allons nous apprendre ?

Nous allons apprendre à construire ce dictionnaire :

{
    'apples': 5,
    'beans': 8, 
    'cherry': 7
}

À partir des listes suivantes:

quantity = [5, 8, 7]
item_name = ["apples", "beans", "cherry"]

AH, facile ça ! il suffit de faire une petite boucle for ... in ...:

Et vous n'auriez pas faux.. Ça donne ceci

# METHOD 1 
result = {}
for i in range(0, min(len(quantity), len(quantity))):
    key = item_name[i]
    value = quantity[i]
    result[key] = value

Le résultat:

>>>print(result)
{'apples': 5, 'beans': 8, 'cherry': 7}

Génial, ça marche ! Mais c'est un peu long.

À ça oui c'est un peu long, c'est même plutôt long...


Voici une méthode plus rapide:

result2 = dict(zip(item_name, quantity))

Le résultat:

>>>print(result2)
{'apples': 5, 'beans': 8, 'cherry': 7}

HA ! une ligne ! trop facile!

Trop bien gros malin, comment ça marche cette ligne magique

Décortiquons ça ensemble.

La fonction zip() prend en paramètre un nombre n d'itérateurs (des listes ici) et renvoie une série de tuples accolant les valeurs des listes.

Un exemple vaut milles mots, regardez:

>>>print(list(zip(chiffres, mots)))

[('apples', 5), ('beans', 8), ('cherry', 7)]

Quand au dict() c'est le constructeur de la classe dictionnaire. Quand il prend une liste de tuple en arguments, il prend construit le dictionaire en mettant la première valeur du tuple en clé et la seconde en value.

author: @thepeakstudio
Vous pourrez retrouver une bonne partie des articles de ce compte sur ce repo.

Pour accéder directement la section que vous regardez actuellement cliquer ici.


Vous êtes arrivé à la fin, bravo! Si vous avez des questions, n'oubliez pas de les poser. A la prochaine !

Sort:  

@slashformotion, great tutorial but it could have been best if you had an English translation along side this post. It had to make use of Google translate to read your blog.

Anyway, thanks for sharing 👍

Your post has been submitted to be manually curated by @gitplait community account because this is the kind of publications we like to see in our community.

Join our Community on Hive and Chat with us on Discord.

[Gitplait-Team]

Thank you for the advice! I will consider that, but I'm not very good in English so ...

Oh yeah, I totally understand. You can also make use of a translator.

I just looked at your guidelines to publish in your community.
They don't actually fit the content I'm making, they are very precise and i don't think my content would really fit in that context.

This is just me but it's okay if the post is all in French (or non-English). I know little bits of French so I can somewhat follow along.

The code image in English is all that I needed. :)