Maison >développement back-end >Tutoriel Python >Comment puis-je convertir efficacement une liste Python de clés et de valeurs alternées en un dictionnaire ?

Comment puis-je convertir efficacement une liste Python de clés et de valeurs alternées en un dictionnaire ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-08 13:38:101040parcourir

How Can I Efficiently Convert a Python List of Alternating Keys and Values into a Dictionary?

Conversion de listes [key1,val1,key2,val2] en dictionnaires en Python

En Python, il est courant de rencontrer des listes où chaque paire d’éléments correspond à une paire clé-valeur dans un dictionnaire. Pour convertir de telles listes en dictionnaires, l'approche la plus élégante sur le plan syntaxique consiste à utiliser la fonction intégrée zip() en conjonction avec la construction de dictionnaire.

Par exemple, étant donné une liste a avec des clés et des valeurs alternées :

a = ['hello','world','1','2']

Nous pouvons créer efficacement un dictionnaire b où chaque clé de a correspond à sa valeur correspondante comme suit :

b = dict(zip(a[::2], a[1::2]))

Ici, a[::2] extrait les éléments pairs, représentant les clés, et a[1::2] extrait les éléments impairs, représentant les valeurs. Le constructeur dict() combine ensuite ces listes dans un dictionnaire.

Pour les listes plus grandes, une alternative économe en mémoire consiste à exploiter la fonction itertools.izip(), qui consomme de manière itérative les éléments de a par paires :

from itertools import izip
i = iter(a)
b = dict(izip(i, i))

En Python 3, un résultat similaire peut être obtenu en utilisant une compréhension de dict avec range():

b = {a[i]: a[i+1] for i in range(0, len(a), 2)}

Alternativement, la fonction zip() peut être utilisée directement, car elle a été paresseuse dans Python 3 :

i = iter(a)
b = dict(zip(i, i))

Par souci de concision, le "morse" L'opérateur (:=) peut être utilisé dans Python 3.8 et versions ultérieures pour effectuer une affectation sur une seule ligne :

b = dict(zip(i := iter(a), i))

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn