105 votes

Un liner: créer un dictionnaire à partir d'une liste avec des index comme clés

Je veux créer un dictionnaire à partir d'une liste donnée, sur une seule ligne . Les clés du dictionnaire seront des index et les valeurs seront les éléments de la liste. Quelque chose comme ça:

 a = [51,27,13,56]         #given list

d = one-line-statement    #one line statement to create dictionary

print(d)
 

Sortie:

 {0:51, 1:27, 2:13, 3:56}
 

Je n'ai pas d'exigences spécifiques quant à la raison pour laquelle je veux une ligne. Je suis juste en train d'explorer python et je me demande si c'est possible.

171voto

glglgl Points 35668
a = [51,27,13,56]
dict(enumerate(a))

va produire

{0: 51, 1: 27, 2: 13, 3: 56}

enumerate(sequence, start=0)

De retour d'un énumérer objet. la séquence doit être une séquence, un itérateur, ou quelque autre objet qui supporte l'itération. L' next() méthode de l'itérateur renvoyé par enumerate() renvoie un tuple contenant un nombre (à partir de début qui est par défaut à 0) et les valeurs obtenues à partir de l'itération au cours de la séquence:

67voto

antitrust Points 4853

Avec un autre constructeur, vous avez

 a = [51,27,13,56]         #given list
d={i:x for i,x in enumerate(a)}
print(d)
 

22voto

Emilio M Bumachar Points 1159
{x:a[x] for x in range(len(a))}

16voto

Stefano Sanfilippo Points 11123

Essayez enumerate : il retournera une liste (ou itérateur) de tuples (i, a[i]) , à partir de laquelle vous pourrez construire un dict :

 a = [51,27,13,56]  
b = dict(enumerate(a))
print b
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X