One liner: création d'un dictionnaire à partir d'une liste avec des indices comme clés

Je veux créer un dictionnaire d'une liste donnée, en une seule ligne. Les clés du dictionnaire des indices, et les valeurs sont les éléments de la liste. Quelque chose comme ceci:

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 aucune exigence spécifique 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.

68
demandé sur jamylak 2013-05-17 15:19:52

5 réponses

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

Produira

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

enumerate(sequence, start=0)

Renvoie un objet énumérer. sequence doit être une séquence, un itérateur ou un autre objet prenant en charge l'itération. La méthode next() de l'itérateur renvoyée par enumerate() renvoie un tuple contenant un count (à partir de start {[15] } qui vaut par défaut 0) et les valeurs obtenues à partir de l'itération sur la séquence :

129
répondu glglgl 2015-06-23 17:57:49

Avec un autre constructeur, vous avez

a = [51,27,13,56]         #given list
d={i:x for i,x in enumerate(a)}
print(d)
27
répondu octoback 2013-05-17 11:50:38

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

a = [51,27,13,56]  
b = dict(enumerate(a))
print b
14
répondu Stefano Sanfilippo 2013-05-17 11:27:16
{x:a[x] for x in range(len(a))}
8
répondu Emilio M Bumachar 2013-05-17 15:54:02

Utilisez simplement la compréhension de liste.

a = [51,27,13,56]  
b = dict( [ ((i,a[i]) for i in range(len(a)) ] )
print b
1
répondu Shahrukh khan 2016-08-27 19:16:26