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 ?
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!