Maison >développement back-end >Tutoriel Python >Comment puis-je convertir efficacement une liste tabulaire en dictionnaire en Python ?
Conversion de listes tabulaires en dictionnaires en Python
Souvent en programmation, nous rencontrons des scénarios où les données sont organisées sous un format tabulaire, comme un liste où les indices pairs représentent les clés et les indices impairs représentent les valeurs correspondantes. La tâche est de transformer cette liste en dictionnaire.
Solution :
Le moyen le plus propre et le plus efficace de réaliser cette conversion consiste à utiliser les fonctions intégrées de Python :
b = dict(zip(a[::2], a[1::2]))
Ce code parcourt efficacement la liste a, en la découpant à l'aide de l'opérateur de tranche étendu [::2], qui ignore tous les autres éléments. Le résultat est deux listes : a[::2] contient les clés et a[1::2] contient les valeurs. Ces listes sont ensuite utilisées pour construire un dictionnaire à l'aide de la fonction dict().
Pour les grandes listes, une approche alternative est recommandée pour éviter de créer des listes temporaires :
from itertools import izip i = iter(a) b = dict(izip(i, i))
Cette méthode utilise le Fonction iter() pour créer un itérateur pour la liste a. La fonction izip() (ou zip() dans Python 3) entrelace les éléments de chaque itérateur, créant un nouvel itérateur qui génère des tuples de clés et de valeurs. Ces tuples sont ensuite transmis à dict() pour construire le dictionnaire.
Dans Python 3, une autre méthode syntaxiquement pratique est :
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
Ce code utilise une compréhension de dictionnaire qui parcourt la liste indices par étapes de deux, assemblant les clés et les valeurs dans un nouveau dictionnaire.
Dans Python 3.8 et versions ultérieures, l'opérateur "morse" (:=) fournit une manière concise d'écrire ceci 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!